Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Trigger
giovedì 29 aprile 2021 - 19.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
skraus
Profilo
| Junior Member
116
messaggi | Data Invio:
gio 29 apr 2021 - 19:11
In un database SQL Server ho una tabella UnitaDiMisura che ha un campo di chiave primaria char(4).
Questa tabella ha relazioni con almeno altre tre tabelle del medesimo DB. Con ognuna delle tre tabelle ha almeno due campi di chiave esterna (FK).
UnitaDiMisura
codUM (PK) char(4)
SCATOLE
idScatola (PK)
umDimensione (FK)
umVolume (FK)
IMBALLI
idImballo
umDimensione (FK)
umVolume (FK)
Le azioni di aggiornamento ed eliminazione a cascato sono impostate su nessuna azione. Per il Delete riesco a sopperire con un TRIGGER INSTEAD OF DELETE alla tabella UnitaDiMisura. Il mio problema è sull'update del campo PK della tabella UnitaDiMisura per operare, sempre con un trigger INSTEAD OF UPDATE un aggiornamento a caduta di tutti i campi in tutte le tabelle correlate.
Questo è il trigger che ho scritto:
ALTER TRIGGER dbo.TRG_MF_UNITA_MISURA_UPD
ON dbo.UnitaDiMisura
INSTEAD OF UPDATE
AS
BEGIN
IF (UPDATE(codUM))
BEGIN
DECLARE @CodUM_Inserito char(10)
DECLARE @CodUM_Eliminato char(10)
SELECT @CodUM_Inserito = CodUM, FROM inserted
SELECT @CodUM_Eliminato = CodUM FROM deleted
UPDATE UnitaDiMisura
SET CodUM=@CodUM_Inserito
FROM UnitaDiMisura INNER JOIN deleted on UnitaDiMisura .CodUM=deleted.CodUM
IF (@CodUM_Eliminato = 'M3')
BEGIN
UPDATE SCATOLE
SET SCATOLE.umVolumne=@CodUM_Inserito
FROM SCATOLE INNER JOIN deleted ON SCATOLE.umVolumne = deleted.CodUM
UPDATE IMBALLI
SET IMBALLI.umVolumne=@CodUM_Inserito
FROM IMBALLI INNER JOIN deleted ON IMBALLI.umVolumne = deleted.CodUM
END
END
END
Al momento, se provo a modificare il record della tabella UnitaDiMisura, con il valore M3, ottengo un errore di violazione dell'integrità, credo causato dal primo update sulla tabella UnitaDiMisura, perché giustamente sto inserendo un valore che non ha correlazione nei record figli.
Ho altresì provato ad alterare la sequenza degli update ma l'esito è sempre lo stesso.
Mi chiedo se è fattibile? se vi sono soluzioni alternative tenendo conto che non posso modificare il campo PK della tabella UnitaDiMisura?
Grazie.
Sk
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !