База данных, в которой я работаю, имеет следующий триггер вставки. Проблема заключается в том, что триггер не будет работать с многострочной вставкой. Когда я пытаюсь вставить несколько строк одновременно, я получаю следующее сообщение.Вставка триггера T-SQL
Msg 512, уровень 16, состояние 1, процедура _ti_UD06, линия 8
Subquery вернулся более чем на 1 значение. Это недопустимо, когда подзапрос следует за =,! =, <, < =,>,> = или когда подзапрос используется как выражение . Я думаю, что проблема заключается в следующем утверждении: вернет более одного значения при вставке нескольких строк.
Как я могу заставить эту триггерную работу вставить несколько строк?
IF(SELECT PROGRESS_RECID FROM inserted) IS NULL
Есть 2 колонки в таблице, PROGRESS_RECID
и PROGRESS_RECID_IDENT_
.
Я думаю, что PROGRESS_RECID_IDENT_
- это столбец Identity
для SQL Server. Сервер PROGRESS_RECID_INDENT
используется сервером PROGRESS.
Если новая запись вставляется проверки запуска, чтобы увидеть, если PROGRESS_RECID
является недействительным и установит его в inserted.Identity
ALTER trigger [dbo].[_ti_UD06] ON [dbo].[UD06] for insert as
begin
if (select PROGRESS_RECID from inserted) is NULL
begin
update t set PROGRESS_RECID = i.IDENTITYCOL
from UD06 t JOIN INSERTED i ON
t.PROGRESS_RECID_IDENT_ = i.PROGRESS_RECID_IDENT_
select convert (bigint, @@identity)
end
end
Вот определение Таблица
CREATE TABLE [dbo].[UD06](
[Company] [nvarchar](8) NULL,
[Key1] [nvarchar](50) NOT NULL,
[Key2] [nvarchar](50) NULL,
[Key3] [nvarchar](50) NULL,
[Key5] [nvarchar](50) NULL,
[Character01] [nvarchar](max) NULL,
[Character02] [nvarchar](max) NULL,
[Character03] [nvarchar](max) NULL,
[Character04] [nvarchar](max) NULL,
[Character05] [nvarchar](max) NULL,
[Character06] [nvarchar](max) NULL,
[Character07] [nvarchar](max) NULL,
[Character08] [nvarchar](max) NULL,
[Character09] [nvarchar](max) NULL,
[Character10] [nvarchar](max) NULL,
[SysRowID] [nvarchar](36) NULL,
[SysRevID] [int] NULL,
[BitFlag] [int] NULL,
[GlobalUD06] [tinyint] NULL,
[GlobalLock] [tinyint] NULL,
[PROGRESS_RECID] [bigint] NULL,
[PROGRESS_RECID_IDENT_] [bigint] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Я внес изменения, я больше не получаю ошибку, но PROGRESS_RECID имеет значение null после вставки. – Kevin
@Kevin Нам нужно будет увидеть, как определение таблицы будет идти дальше. – RBarryYoung
Вот определение таблицы. – Kevin