我根据我在这里找到的一些答案拼凑了一个触发器,我觉得它很接近,但是返回一个提供的值错误,我不知道如何解决。简而言之,我有一个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
答案 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