两张A(teac_id,teac_name)  B(ID,teac_id,course_id),当我修改表A的teac_id如何让表B的teac_id号,也随着增加,其中表B的ID号是系统设置的,course_id也可以允许为空。利用SQL 语句如何写触发器?

解决方案 »

  1.   

    外键UPDATE ON CASCADE就可以了
      

  2.   

    CREATE TRIGGER [dbo].[tg_teac_id]
       ON  [dbo].[A]
       after UPDATE
    AS
    BEGIN
    DECLARE @OLD_TEAC_ID INT
    DECLARE @NEW_TEAC_ID INT
    SELECT @OLD_TEAC_ID=TEAC_ID FROM DELETED
    SELECT @NEW_TEAC_ID =TEAC_ID FROM INSERTED
    UPDATE B SET TEAC_ID=@NEW_TEAC_ID WHERE TEAC_ID=@OLD_TEAC_ID
    END
      

  3.   

    --A(teac_id,teac_name)
    ALTER TABLE A ADD CONSTRAINT PK_A PRIMARY KEY (teac_id)
    GO
    --B(ID,teac_id,course_id)
    ALTER TABLE B ADD CONSTRAINT FK_B FOREIGN KEY (teac_id) REFERENCES A(teac_id)
    ON UPDATE CASCADE
    ON DELETE CASCADE
    GO