منبع اصلی نوشتار زیر در این لینک قرار دارد

استفاده از Sequence در Insert

به مثال زیر دقت کنید:

SQL> select * from t1;
ID         NAME
---------- --------------------
1 mohammad
3 mohsen
SQL> insert into t1 values (s1.nextval, 'javad');
1 row created.
SQL> select * from t1;
ID         NAME
---------- --------------------
8 javad
1 mohammad
3 mohsen
SQL> insert into t1 values (s1.nextval, 'javadssssssssssssssssssssssssssssssssss
sssssssssssssssssssss');
insert into t1 values (s1.nextval, 'javadsssssssssssssssssssssssssssssssssssssss
ssssssssssssssss')
*
ERROR at line 1:
ORA-12899: value too large for column "MAHDI"."T1"."NAME" (actual: 60, maximum:
20)
SQL> insert into t1 values (s1.nextval, 'mahdi');
1 row created.
SQL> select * from t1;
ID         NAME
---------- --------------------
8 javad
10 mahdi
1 mohammad
3 mohsen

در مثال بالا به این مسئله پی بردیم که چون sequence به صورت transactional نیست ما id شماره ۹ را به خاطر faile شدن تراکنش از دست داده‌ایم.

در حقیقت sequence جلو می‌رود بدون توجه به اینکه تراکنش انجام می‌شود یا نه پس همیشه حرکت رو به جلو رو داره.



به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد