在我的数据库中,所有对象名称都以'_ GIDXXX'字结尾。
我有一个UPDATE触发器,确保没有人会改变对象名称的结尾。例如,我的对象名为 CAR_GID23232 。
问题是用户可以删除' _ '字符并触发不会触发(我不喜欢不抓住这个)。
IF EXISTS (
SELECT Srt_Name,Srt_Id
FROM inserted
WHERE Srt_Name not like '%_GID'+CONVERT(varchar(max),Srt_GidNumer)
)
BEGIN
RAISERROR ('Make sure that at the end of the name there is _GIDXXXX', 16, 1)
END
编辑:
主要目标是在对象名称的末尾加上_GIDXXX,但仍然可以删除_字符,例如从CAR_GID2323到CARGID2323并且RAISEERROR不会出现。
答案 0 :(得分:5)
试试这个:
IF EXISTS (
SELECT Srt_Name,Srt_Id
FROM inserted
WHERE Srt_Name not like '%[_]GID'+CONVERT(varchar(max),Srt_GidNumer
)