|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Tengiz Kharatishvili 2:5020/400 05 Jun 2001 04:26:29 To : All Subject : Re: Informix ? -------------------------------------------------------------------------------- "Fedor 'Cruger' Tersin" <Fedor.\'Cruger\'.Tersin@p139.f794.n5020.z2.fidonet.org> wrote in message news:2172204039@p139.f794.n5020.z2.ftn... > Может, нельзя такие ф-ции использовать в качестве дефаултного значения? > В крайнем случае можно развлечься так - вызвать в ф-ции внешнюю хранимую > процедуру, в которой можно сделать что угодно. > ... > U> - нет проблем при вставке в таблицу набора строк > А почему они будут в случает ф-ций? > UDF в SQL Server 2000 не могут менять глобальное состояние базы данных и выполнять динамические запросы. Есть ещё и другие ограничения. См. BOL. Расширенные хранимые процедуры вызывать можно, однако это всё равно не будет хорошо работать для default значений. Еесли Вы вставите группу строк, то все они получат одинаковый default. Соответственно, это не годится для генерации ключа, если, конечно, не вставлять только одиночные строки. drop table x drop function y go create table x (pk int, data int) go create function y () returns int as begin return coalesce((select max(pk) from x), 0) + 1 end go alter table x add default dbo.y() for pk go -- одиночные вставки работают нормально insert x (data) values (1) insert x (data) values (2) -- для нескольких строк это уже не годится insert x (data) select 3 union all select 4 select * from x ============ (1 row(s) affected) (1 row(s) affected) (2 row(s) affected) pk data ----------- ----------- 1 1 2 2 3 3 3 4 (4 row(s) affected) Это преодолимо, конечно, например при помощи instead of триггеров, однако заметно больше возни чем с IDENTITY, который покрывает большинство разумных сценариев для генерации суррогатных ключей. Cheers. --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/65772423534d.html, оценка из 5, голосов 10
|