相关疑难解决方法(0)

SQL Server - 使用视图而不是触发器时获取插入的记录标识值

对于具有标识字段的多个表,我们在这些视图上使用视图和替代触发器实现行级安全性方案.这是一个简化的示例结构:

-- Table
CREATE TABLE tblItem (
    ItemId int identity(1,1) primary key,
    Name varchar(20)
)
go

-- View
CREATE VIEW vwItem 
AS
    SELECT *
    FROM tblItem
    -- RLS Filtering Condition
go

-- Instead Of Insert Trigger
CREATE TRIGGER IO_vwItem_Insert ON vwItem
INSTEAD OF INSERT
AS BEGIN
    -- RLS Security Checks on inserted Table

    -- Insert Records Into Table
    INSERT INTO tblItem (Name)
    SELECT Name
    FROM inserted;
END
go
Run Code Online (Sandbox Code Playgroud)

如果我想插入记录并获取其身份,在实现RLS而不是触发器之前,我使用了:

DECLARE @ItemId int;

INSERT INTO tblItem (Name)
VALUES ('MyName');

SELECT @ItemId …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server triggers identity

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

identity ×1

sql ×1

sql-server ×1

t-sql ×1

triggers ×1