Como emular um gatilho BEFORE INSERT no T-SQL / SQL Server para entidades de super / subtipo (herança)?

Isso está no Azure.

Eu tenho uma entidade supertipo e várias entidades de subtipo, o último dos quais precisa obter suas chaves estrangeiras da chave primária da entidade super tipo em cada inserção. No Oracle, eu uso umBEFORE INSERT gatilho para conseguir isso. Como alguém conseguiria isso no SQL Server / 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)
);

Eu desejo uma inserção emsub1 disparar um gatilho que realmente insere um valor emsuper e usa osuper_id gerado para colocar emsub1.

No Oracle, isso seria realizado pelo seguinte:

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;

Por favor, informe sobre como eu iria simular isso em T-SQL, dado que o T-SQL não temBEFORE INSERT capacidade?

questionAnswers(2)

yourAnswerToTheQuestion