Правильный Insert.

Chajnik7
Дата: 26.11.2009 09:02:56
Здравствуйте.
Есть таблица со множеством полей в которую добавляются записи по ключу NN.
Написала след. команду, которая работает
insert into AA (NN, FIO,...)
values ((select max(nn) + 1 from AA, 'ivanov',...);
commit;


Подскажите, пожалуйста, не получат ли пользователи при записи в таблицу одинаковый мах(nn).
Может быть как-то по другому нужно сделать?
Вячеслав Любомудров
Дата: 26.11.2009 09:10:49
Получат
Лучше использовать sequence, если не страшны пропуски в нумерации
Chajnik7
Дата: 26.11.2009 09:53:14
Вячеслав Любомудров,
Подскажите тогда, как использовать sequence.
А что значит пропуски в нумерации?
Вячеслав Любомудров
Дата: 26.11.2009 10:30:39
tst> create table t1(a number);

Table created.

tst> create sequence s1;

Sequence created.

tst> insert into t1 values(s1.nextval);

1 row created.

tst> insert into t1 values(s1.nextval);

1 row created.

tst> commit;

Commit complete.

tst> insert into t1 values(s1.nextval);

1 row created.

tst> rollback;

Rollback complete.

tst> insert into t1 values(s1.nextval);

1 row created.

tst> select * from t1;

         A
----------
         1
         2
         4

tst> 
Chajnik7
Дата: 26.11.2009 10:49:33
Вячеслав Любомудров,
А почему получаются пропуски? Как часто они будут возникать? Эта дырка навсегда останется или в какой-то момент номер 3 всплывет?
tru55
Дата: 26.11.2009 10:54:13
Chajnik7
Вячеслав Любомудров,
А почему получаются пропуски? Как часто они будут возникать? Эта дырка навсегда останется или в какой-то момент номер 3 всплывет?


Тебе же уже показали - в случае rollback (хотя возможны и другие случаи). Всплывать никто не будет :))
Wladislaw
Дата: 26.11.2009 11:42:12
Chajnik7
Вячеслав Любомудров,
А почему получаются пропуски? Как часто они будут возникать? Эта дырка навсегда останется или в какой-то момент номер 3 всплывет?

Полезно также почитать документацию по поводу sequence. Например тут и тут.
Chajnik7
Дата: 26.11.2009 14:02:15
Дело в том, что наличие дырок - это плохо. Можно как-нибудь без них?
Добрый Э - Эх
Дата: 26.11.2009 14:04:30
И чем же наличие дырок так плохо?
Chajnik7
Дата: 26.11.2009 14:15:03
Потому что - NN это уникальный номер, который находится в зарезервированном диапазоне, допустим от 50000000 до 59999999, и наличие большого количества "дырок" - очень нерационально использует этот диапазон.