Comment émuler un déclencheur BEFORE INSERT dans T-SQL / SQL Server pour des entités super / sous-type (Héritage)?

C'est sur Azure.

J'ai un supertype de l'entité et de plusieurs sous-type d'entités, dont le dernier doit obtenir leurs clés étrangères de la clé primaire de la super type d'entité sur chaque insertion. Dans Oracle, j'utilise un BEFORE INSERT déclencheur pour effectuer cette opération. Comment pourrait-on faire cela de du Serveur SQL /T-SQL?

DDL

CREATE TABLE super (
 super_id int IDENTITY(1,1)
 ,subtype_discriminator char(4) CHECK (subtype_discriminator IN ('SUB1', 'SUB2')
 ,CONSTRAINT super_id_pk PRIMARY KEY (super_id)
);
CREATE TABLE sub1 (
 sub_id int IDENTITY(1,1)
,super_id int NOT NULL
,CONSTRAINT sub_id_pk PRIMARY KEY (sub_id)
,CONSTRAINT sub_super_id_fk FOREIGN KEY (super_id) REFERENCES super (super_id)
);

Je souhaite pour une insertion dans sub1 à feu un déclencheur qui fait insère une valeur dans super et utilise le super_id généré à mettre en sub1.

Dans Oracle, ce serait accomplie par le suivant:

CREATE TRIGGER sub_trg
    BEFORE INSERT ON sub1
    FOR EACH ROW
DECLARE
    v_super_id int; //Ignore the fact that I could have used super_id_seq.CURRVAL
BEGIN
    INSERT INTO super (super_id, subtype_discriminator) 
        VALUES (super_id_seq.NEXTVAL, 'SUB1') 
        RETURNING super_id INTO v_super_id;
    :NEW.super_id := v_super_id;
END;

Veuillez vous informer sur la façon dont je voudrais simuler cela en T-SQL, étant donné que le T-SQL manque de BEFORE INSERT capacité?

source d'informationauteur Matthew Moisen