sql - T-SQL : How to deny update on one column of a table via trigger?

标签 sql sql-server tsql sql-server-2005 sql-server-2008-r2

问题:
在我们的 SQL-Server 2005 数据库中,我们有一个表 T_Groups。
除其他外,T_Groups 还具有字段 ID (PK) 和名称。

现在我们公司的一些白痴使用名称作为映射表中的键...
这意味着现在人们不能更改组名称,因为如果这样做,映射就会消失......
现在,在这个问题得到解决之前,我需要向 T_Groups 添加一项限制,这样就无法更新组的名称。
请注意,插入应该仍然是可能的,并且不更改组名的更新也应该是可能的。

另请注意,应用程序的用户和开发人员同时拥有 dbo 和 sysadmin 权限,因此 REVOKE/DENY 不起作用。

我怎样才能用触发器做到这一点?

最佳答案

CREATE TRIGGER dbo.yournametrigger ON T_Groups
FOR UPDATE
AS
BEGIN
  IF UPDATE(name)
  BEGIN
    ROLLBACK
    RAISERROR('Changes column name not allowed', 16, 1);
  END
  ELSE
  BEGIN
  --possible update that doesn't change the groupname
  END
END

关于sql - T-SQL : How to deny update on one column of a table via trigger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13082595/

相关文章:

sql - 在 SQL Server 中创建一个触发器来更新另一个表

sql - 在oracle中如何在搜索字符串时消除区分大小写

SQL 插入行的顺序重要吗?

mysql - 从 MySQL 到 MS SQL,所有列都无效?

c# - 将数据从 Excel 工作表导入到 SQL Server 数据库

tsql - 从 sql 汇总中的小计/总计中删除空值

sql - 使用 JSON_BUILD_OBJ 从 Postgres 返回 JSON

c# - nvarchar(max) 和 sql express 2005 的流畅 NHibernate 问题

c# - 'Where' 表达式中的列名称无效

sql - 合并多列