加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2008 – 将数据插入视图(SQL Server)

发布时间:2020-12-12 16:46:10 所属栏目:MsSql教程 来源:网络整理
导读:我有以下设置: CREATE TABLE dbo.Licenses( Id int IDENTITY(1,1) PRIMARY KEY,Name varchar(100),RUser nvarchar(128) DEFAULT USER_NAME())GOCREATE VIEW dbo.rLicensesASSELECT NameFROM dbo.LicensesWHERE RUser = USER_NAME()GO 当我尝试使用视图插入数
我有以下设置:
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

当我尝试使用视图插入数据…

INSERT INTO dbo.rLicenses VALUES ('test')

出现错误:

Cannot insert the value NULL into column Id,table master.dbo.Licenses; column does not allow nulls. INSERT fails.

为什么尝试使用视图插入标识列的自动增量时,如何解决?

情况是:

数据库的不同用户应该只能在该表中使用自己的行.因此,我试图通过检查用户名将视图用作一种安全.有什么更好的解决方案吗?

解决方法

命名列如何?
INSERT INTO dbo.rLicenses (name) VALUES ('test')

这是多年以来,我尝试通过视图更新,所以YMMV作为HLGEM提到.

我会考虑一个“INSTEAD OF” trigger的视图,允许一个简单的INSERT dbo.Licenses(即表)在触发器中

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读