Background
我有一个表Job_Test
,其中有一个名为 Status
的列。列的值可以是七个值之一。
问题
如何阻止特定值New
更改为Hold
?但是,可以将其更改为其他六个值之一。
到目前为止我有什么
CREATE TRIGGER
dbo.statusCheck
ON
[dbo].job_test
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
If (SELECT [status] FROM job_test) LIKE 'New'
Begin
...
End
END
但是我不确定在哪里完成它。
有
INSTEAD OF
触发器可能会对您有所帮助。
CREATE TRIGGER dbo.statusCheck_InsteadOfUpdate
ON statusCheck
INSTEAD OF UPDATE
AS
BEGIN
UPDATE s SET
s.[status] = i.[status],
... other fields to UPDATE ...
FROM statusCheck s
INNER JOIN INSERTED i ON i.ID = s.ID
WHERE i.[status] <> 'Hold' AND s.[Status] <> 'New'
END
如果发现任何错误,您也可以抛出错误