我在SQL中有一个没有错误的触发器。但是,它无法实现所需的行为。我想要做的是,当用户更新field1列时,获取该值,并将该值和与该值相关的信息插入到不同的数据库表中。它没有按预期插入。这是触发器:
ALTER TRIGGER [dbo].[Trigger1]
ON [dbo].[table1]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UpdatedVendId CHAR
SELECT
@UpdatedVendId = inserted.VendId
FROM
inserted
IF UPDATE (VendID)
BEGIN INSERT INTO OtherTable (ClassID, Crtd_User, LUpd_DateTime, LUpd_User, VendId) SELECT ClassID, crtd_User, LUpd_DateTime, LUpd_User, VendId FROM dbo.table1 WHERE VendId = @UpdatedVendId
END
END
答案 0 :(得分:1)
要解决多行操作的问题,可以使用插入的虚拟表大大简化触发器。您的触发器的整个内容可以缩短为此。
IF UPDATE (VendID)
INSERT INTO OtherTable
(
ClassID
, Crtd_User
, LUpd_DateTime
, LUpd_User
, VendId
)
SELECT t1.ClassID
, t1.crtd_User
, t1.LUpd_DateTime
, t1.LUpd_User
, t1.VendId
FROM dbo.table1 t1
join inserted i on i.ClassID = t.ClassID