gpt4 book ai didi

sql - 不可变的 SQL 列

转载 作者:行者123 更新时间:2023-12-02 10:34:12 24 4
gpt4 key购买 nike

是否可以在 MSSQL 中将列标记为不可变

看起来这将是一个有用的 DDL 功能;一旦在行中设置了值(“行”被定义为值与主键的特定关系),则在不删除该行的情况下无法更改该值。

显然(像大多数事情一样)这在应用程序层中是完全可行的,但 SQL DDL 的一半乐趣在于对应用程序代码进行错误检查。

最佳答案

如果执行 DML 的用户不是对象的所有者,也不是数据库本身的“db_owner”,则您可以只授予该表的“插入”权限,但不能授予该表的更新权限:

假设一个表有id, col1, col2

grant insert, select, delete on the_table to the_user;
grant update (id, col2) on the_table to the_user;

通过这些授权,the_user 可以插入行并为所有三列提供值。他还可以更新 idcol2 列,但不能更新 col1 列。

db_owner(可能还有表的创建者/所有者)始终可以更新所有列。我不知道是否有办法撤销这些角色的特权。

关于sql - 不可变的 SQL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12166523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com