Ho la seguente configurazione:Inserire i dati in vista (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
Quando provo ad inserire i dati usando la vista ...
INSERT INTO dbo.rLicenses VALUES ('test')
si pone un errore:
Cannot insert the value NULL into column Id, table master.dbo.Licenses; column does not allow nulls. INSERT fails.
Perché l'incremento automatico della colonna Identity non funziona quando si tenta di inserire utilizzando la vista e come posso risolverlo?
Scenario è:
I diversi utenti del database dovrebbero essere solo in grado di lavorare con le proprie righe in quella tabella. Pertanto sto cercando di utilizzare la vista come una sorta di sicurezza controllando il nome utente. Esiste una soluzione migliore?
Perché non si inserisce direttamente in quel tavolo? Non inserisco mai le visualizzazioni perché hanno strane regole bizzarre e sono più dolorose di un inserto diretto. – HLGEM
I diversi utenti del database dovrebbero essere in grado di lavorare con le proprie righe in quella tabella. Pertanto sto cercando di utilizzare la vista come una sorta di sicurezza controllando il nome utente. C'è una soluzione migliore? – Keeks
@Keeks; il tuo codice funziona bene su SQL Server 2014 e SQL Server 2016 ctp 2.3 –