2010-02-11 5 views

Répondre

2

Selon MSDN, les déclencheurs sont utiles pour "Étendre l'intégrité référentielle entre les tables"., ce qui est exactement ce que vous essayez de faire. Il suffit donc d'utiliser un déclencheur FOR UPDATE et d'élever une erreur si l'ancienne valeur n'était pas null mais que la nouvelle valeur l'était.

En supposant que vous avez une colonne nullable de type int appelé SomeId et votre table est appelée SomeTable le déclencheur suivant ferait le travail:

CREATE TRIGGER CheckTrigger ON SomeTable 
FOR UPDATE 
AS 
DECLARE @OldId int, 
     @NewId int 
BEGIN 
    SELECT @OldId = SomeId FROM deleted 
    SELECT @NewId = SomeId FROM inserted 

    IF NOT @OldId IS NULL AND @NewId IS NULL 
    BEGIN 
     RAISERROR ('No!!!!', 10,1) WITH NOWAIT 
     ROLLBACK TRANSACTION 
    END 
END; 
1

Un déclencheur serait votre meilleur pari dans ce cas

1

Eh bien, la première chose qui me vient à l'esprit est la création d'un déclencheur qui ne met à jour la colonne que si elle est nulle et que la nouvelle valeur ne l'est pas.

Questions connexes