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, и наличие большого количества "дырок" - очень нерационально использует этот диапазон.