У меня есть следующие настройки:Вставка данных в представление (SQL Server)
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.
Почему автоматический приращение столбца идентификации не работает при попытке вставить с помощью представления и как его исправить?
Сценарий:
Различные пользователи базы данных должны быть только в состоянии работать со своими строками в этой таблице. Поэтому я пытаюсь использовать представление как вид безопасности, проверяя имя пользователя. Есть ли лучшее решение?
Почему вы не вставляете в эту таблицу? Я никогда не вставляю в представления, потому что они имеют странные правила причудливости и больше боятся, чем прямая вставка. – HLGEM
Различные пользователи базы данных должны работать только со своими строками в этой таблице. Поэтому я пытаюсь использовать представление как вид безопасности, проверяя имя пользователя. Есть ли лучшее решение? – Keeks
@ Keeks; ваш код отлично работает на SQL Server 2014 и SQL Server 2016 ctp 2.3 –