Ciao!!! Ho bisogno di fare uno script valido per Sql Server , che vada a inserire un record all'interno di una tabella il cui campo chiave è di tipo nvarchar (e che non si autoincrementa, dev'esserci qualche trigger o routine interna che lo valorizza nel momento in cui si tocca quella tabella).
Io ho provato a forzare questo valore con l'inserimento del record, ma mi esce il messaggio di errore secondo cui sto duplicando la chiave.
Potete dirmi se ho sbagliato proprio nel codice o se in realtà il tipo di errore è da interpretare come un "non puoi farmi mettere un valore che decidi tu" ?
Il codice è il seguente , mi sono permessa di farlo perchè ho notato che comunque gli indici sono incrementali se pur di tipo stringa.
codice:
DECLARE @MaxId AS INT
SET @MaxId = SELECT MAX(CAST(REPLACE(REPLACE(IDProtocollo, 'C', ''), 'S', '') AS int)) AS MaxId FROM TABAssets_Cambiamenti
INSERT INTO TABAssets_Cambiamenti (IDProtocollo, IDTipo, Data, Descrizione,IDFrom, IDTo)
SELECT ('S' + CAST(@MaxId AS nvarchar(10)) + 'C'), 'T2', GetDate(), TABClienti.Cognome, TABClientiRiferimenti.IDCliente, TABClientiRiferimenti.IDCliente
FROM TABAssets_Hardware
INNER JOIN TABClientiRiferimenti ON TABClientiRiferimenti.IDRiferimento = TABAssets_Hardware.IDRiferimento
INNER JOIN TABClienti ON TABClienti.IDCliente = TABClientiRiferimenti.IDCliente
INNER JOIN qd_ChiamateDiTrasferiti on TABClientiRiferimenti.IDRiferimento = qd_ChiamateDiTrasferiti.IDRiferimento