sql update 触发器

编程有钱人了 2014-10-28 11:07:55
看图,有三个字字段

帮忙写一个触发器,当字段UserName 更新的时候 如果这个段里有“tandol” 字符的时候,禁止更新,
用触发器怎么写??
...全文
132 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程有钱人了 2014-10-28
  • 打赏
  • 举报
回复
谢谢你们的帮助,结贴
hleb231 2014-10-28
  • 打赏
  • 举报
回复
没看清 要用like
hleb231 2014-10-28
  • 打赏
  • 举报
回复

create trigger 触发器名
on dbo.H_Hy
for update as
if exists(select username  from inserted where username ='tandol')
begin
print '不允许插入tandol'
rollback transaction
end

还在加载中灬 2014-10-28
  • 打赏
  • 举报
回复
UserName nvarchar(50) CHECK( UserName NOT LIKE N'%tandol%' )
Tiger_Zhao 2014-10-28
  • 打赏
  • 举报
回复
如果指包含关系,你自己把约束改为 NOT LIKE 判断。
编程有钱人了 2014-10-28
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
只是字段值的检查没必要用到触发器,直接在建表语句中加个约束好了
CREATE TABLE ... (
    ...
    UserName nvarchar(50) CHECK( UserName <> N'tandol' )
)
约束可以吗?那个字符串 是包含的关系 用 like 比较好吧
Tiger_Zhao 2014-10-28
  • 打赏
  • 举报
回复
只是字段值的检查没必要用到触发器,直接在建表语句中加个约束好了
CREATE TABLE ... (
...
UserName nvarchar(50) CHECK( UserName <> N'tandol' )
)
还在加载中灬 2014-10-28
  • 打赏
  • 举报
回复
CREATE TRIGGER TGR_TABLENAME_UPDATE
ON [表名]
INSTEAD OF UPDATE
AS
BEGIN
	IF EXISTS(SELECT 1 FROM INSERTED WHERE UserName LIKE'%tandol%')
		RETURN
	UPDATE A
	SET UserName=B.UserName,UsePwd=B.UsePwd
	FROM [表名] A
		INNER JOIN INSERTED B ON A.id=B.id
END
试下

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧