能否为单一列而非整张表授予数据库权限?
能否针对数据库表单一列授予INSERT权限?
可以针对单一列授予INSERT权限,但你写的grant insert on Person.code语法不正确,主流数据库的正确语法需要明确指定列名列表。
正确授权语法示例
以你场景中的Person表和user1用户为例,主流数据库的授权命令如下:
- MySQL/Oracle/PostgreSQL/SQL Server:
GRANT INSERT (Code) ON Person TO user1;
注意事项
- 授予列级INSERT权限后,用户插入数据时只能对授权列赋值。如果表中存在其他非空且无默认值的列(比如你的
Person表中的Name列),用户执行插入操作时会报错——因为没有权限为这些列赋值,也无法留空满足非空约束。 - 不同数据库对列级权限的支持细节可能略有差异,但核心语法逻辑一致。
内容的提问来源于stack exchange,提问作者Antonio Rossi
相关产品推荐
相关产品推荐

