SQL Trigger条件插入 - 提供的值数错误

时间:2014-08-03 21:35:03

标签: sql triggers

我根据我在这里找到的一些答案拼凑了一个触发器,我觉得它很接近,但是返回一个提供的值错误,我不知道如何解决。简而言之,我有一个ParticipationStatus表,我希望在UserRole表中插入用户RoleID为'19'的记录,其中包括插入的UserID和'Pending'状态。

Participation_Status表有一些其他字段,但唯一需要的是auto_id列。到目前为止,我所提出的是“列名称或提供的值的数量与表定义不匹配”。任何建议都将不胜感激。

CREATE TRIGGER [dbo].[trg_insert_status_participation] ON [dbo].[UserRoles]
FOR INSERT AS

BEGIN

If (SELECT RoleID FROM INSERTED)=19

DECLARE @UserID int
DECLARE @Status nvarchar(50)

INSERT INTO ParticipationStatus
VALUES (@UserID, @Status)

SET @UserID = (select UserID from inserted) 
SET @Status = 'Pending'
END

1 个答案:

答案 0 :(得分:0)

INSERTED可以有多行。您需要相应地编码触发器。这样做实际上要简单得多。

CREATE TRIGGER [dbo].[trg_insert_status_participation] ON [dbo].[UserRoles]
FOR INSERT AS

BEGIN

INSERT INTO ParticipationStatus(UserID, Status)
SELECT UserID, 'Pending' FROM INSERTED
WHERE RoleID = 19


END