我有2个表..
表1 Booksinfo 里面有 ISBN NAME DATE 三列...ISBN为主键..
表2 AllISBN 里面就有一个ISBN一列 为主键..我想设置个触发器....当表1添加了数据后...把表1中的ISBN号自动添加到表2的ISBN这一列中...这个触发器应该怎么写??? 

解决方案 »

  1.   

    CREATE TABLE Booksinfo(
    ISBN VARCHAR(20) NOT NULL ,
    NAME VARCHAR(20),
    DATE DATE,
    PRIMARY KEY (ISBN)
    );CREATE TABLE AllISBN(
    ISBN varchar(20) NOT NULL ,
    PRIMARY KEY (ISBN)
    );
    DELIMITER |CREATE TRIGGER trBooksinfo_b_i BEFORE INSERT ON Booksinfo
      FOR EACH ROW BEGIN
        INSERT INTO AllISBN SET ISBN = NEW.ISBN;
      END;
    |DELIMITER ;
      

  2.   

    考虑到健壮性,需要增加一个看似冗余的查询动作。来看看第二张表里是不是已经存在这个ISBN。
    CREATE TABLE Booksinfo(
        ISBN VARCHAR(50) NOT NULL PRIMARY KEY,
        NAME VARCHAR(100),
        DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        
    );CREATE TABLE AllISBN(
        ISBN VARCHAR(50) NOT NULL PRIMARY KEY 
    );
    DELIMITER //CREATE TRIGGER trSaveIsbn BEFORE INSERT ON Booksinfo
      FOR EACH ROW 
    BEGIN
        DECLARE estIsbn INT;
        SELECT COUNT(*) INTO estIsbn FROM AllISBN WHERE ISBN=NEW.ISBN;
        IF(estIsbn<=0) THEN
            INSERT INTO AllISBN VALUES(NEW.ISBN);
        END IF;
    END;
    //
    DELIMITER ;