捕获是指通过连接的应用程序在table A
中插入记录时,同时在table B
中插入记录。我需要在表B中更新此记录中的一列。
如果我在A中插入后创建一个在表B中插入记录的触发器,则app会抛出主键违例异常(正确地说是这样)。
如果触发器尝试更新表B中的记录,则不会发生。
这是我尝试更新表B的代码:
CREATE TRIGGER [dbo].[TriggerName]
ON [dbo].[fields] -- Table A
FOR INSERT NOT FOR REPLICATION
AS
BEGIN
IF @@ROWCOUNT = 0
RETURN;
SET NOCOUNT ON;
IF EXISTS ( ---This is to check if I need to update the B table or not
SELECT *
FROM roles r
WHERE r.sys_id = (
SELECT sys_id
FROM inserted i
)
AND r.rolename = 'DTNSystemUser'
)
BEGIN
DECLARE @sys_id INT
DECLARE @field_id INT
DECLARE @role_id INT
SELECT @sys_id = sys_id
FROM inserted
SELECT @field_id = field_id
FROM inserted
SELECT @role_id = role_id
FROM roles
WHERE sys_id = @sys_id
AND rolename = 'DTNSystemUser'
BEGIN
UPDATE roles_permissions --Table B
SET gpermissions=15
WHERE sys_id=@sys_id and role_id=@role_id
END
END
ELSE
BEGIN
RETURN
END
END
GO