请用SQLSever2016代码实现
时间: 2024-12-22 20:11:03 浏览: 5
在SQL Server 2016中,你可以使用`IF`语句结合`AUDIT ACTION`来创建一个名为`privacy_trigger`的触发器,如下所示:
```sql
CREATE TRIGGER privacy_trigger
ON employee_history
AFTER SELECT
AS
BEGIN
DECLARE @CurrentEmployeeID INT,
@QueryEmployeeID INT;
SET @CurrentEmployeeID = SUSER_ID(); -- 获取执行触发器的当前登录用户的ID
SELECT @QueryEmployeeID = employee_id FROM inserted; -- 获取查询操作中的employee_id
IF (@CurrentEmployeeID != @QueryEmployeeID) -- 检查是否查询的是自己
BEGIN
RAISERROR('您无权查询他人历史信息', 16, 1); -- 抛出错误并停止查询
RETURN; -- 结束触发器处理
END;
END;
GO
```
这个触发器会在每次`SELECT`操作后执行,如果查询的员工ID与当前登录用户的ID不符,就会抛出错误,阻止对他人历史信息的查询。
**相关问题**:
1. SQL Server 2016中的触发器有哪些其他类型?
2. 如何在触发器中避免硬编码特定的错误信息?
3. 如何启用SQL Server的审计功能来跟踪这个触发器的行为?
阅读全文