将SQL中几张表设为只读,这是什么奇怪需求?

2023-02-13 00:00:00 创建 数据 数据库 触发器 设为

近接到一个奇怪的需求,要将SQL Server中的几张表设为只读。我的反应就是直接将用户设为只读权限就好了,但是仔细一想又不是那么回事。

创建只读账号

SQL Server的只读账号是针对某个具体的数据库,设置的方法很简单:

  1. 进入Sqlserver Management Studio(MSSQL客户端)
  2. 选择安全性->登录名->右键新建登录名
  3. 在常规里输入用户名和密码
  4. 在"用户映射"里“映射到此登录名的用户”选择该用户可以操作的数据库
  5. 在“数据库角色成员身份”里选择"db_datareader",
  6. 这样一个只读用户就创建完成了。

但是这样会造成所有的表都变成只读,这与需求不符。


那该怎么办呢?今天就告诉大家几种常见的方法。

1、使用触发器限制单表只读

有如下一张创建好的表Teacher

我们先往里面插入一条数据来证明它是可写的。


INSERT INTO Teacher VALUES('04','马六');

相关文章