Получение @@ identity или Scope_identity () внутри значения по умолчанию, сопоставленного со скалярной функцией - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть таблица с ID в качестве столбца идентификации и Code в качестве varchar столбца. Значение Code по умолчанию установлено на скалярную функцию X.

Внутри этой скалярной функции X получение scope_identity() или @@identity возвращает ноль. Есть ли способ получить вставленный идентификатор без использования триггера вставки?

Любая помощь с благодарностью

1 Ответ

0 голосов
/ 28 апреля 2019

Вы можете просто пропустить ID и IDENTITY и сгенерировать code в качестве первичного ключа. EG

--drop table if exists t
--drop sequence t_seq
--drop function t_key_gen 
go
create sequence t_seq start with 1000 increment by 1

go
create or alter function t_key_gen(@i int)
returns char(10)
as
begin
   return concat('AB',right(concat('0000000000',@i),8));
end

go

create table t(code char(10) primary key default dbo.t_key_gen(next value for t_seq), a int)

go

insert into t(a) values (1),(2),(3)

select * from t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...