Hvis du vil se hvordan sådan nogen ser ud så prøv og upsize en lille Access database med CASCADE til din SQLServer. Upsize wizard genererer nemlig triggers.
CREATE TABLE [dbo].[postnr] ( [postnr] [int] NOT NULL , [by] [nvarchar] (50) NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[adresse] ( [navn] [nvarchar] (50) NOT NULL , [adresse] [nvarchar] (50) NULL , [postnr] [int] NULL ) ON [PRIMARY] GO
med triggers:
CREATE TRIGGER "postnr_UTrig" ON postnr FOR UPDATE AS SET NOCOUNT ON /* * CASCADE UPDATES TO 'adresse' */ IF UPDATE(postnr) BEGIN UPDATE adresse SET adresse.postnr = inserted.postnr FROM adresse, deleted, inserted WHERE deleted.postnr = adresse.postnr END
GO
CREATE TRIGGER "postnr_DTrig" ON postnr FOR DELETE AS SET NOCOUNT ON /* * CASCADE DELETES TO 'adresse' */ DELETE adresse FROM deleted, adresse WHERE deleted.postnr = adresse.postnr
GO
CREATE TRIGGER "adresse_UTrig" ON adresse FOR UPDATE AS SET NOCOUNT ON /* * PREVENT UPDATES IF NO MATCHING KEY IN 'postnr' */ IF UPDATE(postnr) BEGIN IF (SELECT COUNT(*) FROM inserted) != (SELECT COUNT(*) FROM postnr, inserted WHERE (postnr.postnr = inserted.postnr)) BEGIN RAISERROR 44446 'The record can''t be added or changed. Referential integrity rules require a related record in table ''postnr''.' ROLLBACK TRANSACTION END END
GO
CREATE TRIGGER "adresse_ITrig" ON adresse FOR INSERT AS SET NOCOUNT ON /* * PREVENT INSERTS IF NO MATCHING KEY IN 'postnr' */ IF (SELECT COUNT(*) FROM inserted) != (SELECT COUNT(*) FROM postnr, inserted WHERE (postnr.postnr = inserted.postnr)) BEGIN RAISERROR 44447 'The record can''t be added or changed. Referential integrity rules require a related record in table ''postnr''.' ROLLBACK TRANSACTION END
GO
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.