这是触发器......
ALTER TRIGGER [dbo].[trg_rejectNoTitle]
ON [dbo].[FMQI]
FOR INSERT,UPDATE
AS
IF EXISTS (SELECT * FROM inserted WHERE TITLE = '')
BEGIN
SET NOCOUNT ON;
RAISERROR('Missing TITLE',10,1)
ROLLBACK TRAN
END
GO
如您所见,我想在TITLE字段为空字符串时拒绝插入或更新。我无法弄清楚为什么if语句总是解析为true,即使TITLE不为空且插入或更新被拒绝。
更新:问题已解决
Lajos让我走上了正确的道路。这就是我修复它的方法......
DECLARE @Title VARCHAR(45)
SELECT @Title = TITLE FROM inserted
IF @Title = ''
BEGIN
SET NOCOUNT ON;
RAISERROR('Missing TITLE',10,1)
ROLLBACK TRAN
END
答案 0 :(得分:2)
您正在检查inserts
表中是否有任何记录title
为空字符串。我认为条件是正确的,因为你一直至少有这样的记录。
我认为你想要做的是检查插入或更新的记录title
是否为空字符串。您应该检查new.title
是否为空字符串,而不是在整个表中搜索这样的记录。