我有以下设置:
CREATE TABLE dbo.Licenses
(
Id int IDENTITY(1,1) PRIMARY KEY,
Name varchar(100),
RUser nvarchar(128) DEFAULT USER_NAME()
)
GO
CREATE VIEW dbo.rLicenses
AS
SELECT Name
FROM dbo.Licenses
WHERE RUser = USER_NAME()
GO
Run Code Online (Sandbox Code Playgroud)
当我尝试使用视图插入数据时...
INSERT INTO dbo.rLicenses VALUES ('test')
Run Code Online (Sandbox Code Playgroud)
出现错误:
Cannot insert the value NULL into column Id, table master.dbo.Licenses; column does not allow nulls. INSERT fails.
Run Code Online (Sandbox Code Playgroud)
为什么在尝试使用视图插入时身份列的自动增量不起作用,我该如何解决?
场景是:
数据库的不同用户应该只能在该表中使用自己的行.因此,我试图通过检查用户名将视图用作一种安全性.有没有更好的解决方案?
gbn*_*gbn 16
命名你的专栏怎么样?
INSERT INTO dbo.rLicenses (name) VALUES ('test')
Run Code Online (Sandbox Code Playgroud)
自从我尝试通过视图进行更新已经多年了,所以YMMV就像HLGEM所提到的那样.
我会考虑视图上的"INSTEAD OF"触发器,以允许触发器中的简单INSERT dbo.Licenses(即表格)