这是触发因素...
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字段为空字符串时,我想拒绝插入或更新。我无法弄清楚即使TITLE不为空并且插入或更新被拒绝的情况下,如果if语句始终解析为true的原因。
更新:问题已解决
拉霍斯(Lajos)使我走上了正确的道路。这就是我解决的方法...
DECLARE @Title VARCHAR(45)
SELECT @Title = TITLE FROM inserted
IF @Title = ''
BEGIN
SET NOCOUNT ON;
RAISERROR('Missing TITLE',10,1)
ROLLBACK TRAN
END
您正在检查表中是否有任何记录,inserts
其中包含的空字符串title
。我认为条件是正确的,因为您一直都至少有这样的记录。
我相信您想要做的是检查插入或更新的记录是否title
为空字符串。您应该检查是否new.title
为空字符串,而不是在整个表中搜索该记录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句