插入另一个表后触发更新表(表B)中的记录(表A)

时间:2015-10-14 08:48:40

标签: sql sql-server

捕获是指通过连接的应用程序在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

0 个答案:

没有答案
相关问题