2012-05-16 47 views
0

我有2个表MYSQL自动更新第二表查询

Try1(ID和值a)

try2(ID和valueB)

在表中Try1 ID是自动增量和主键,我不知何故想链接这个TRY1.ID到try2.ID所以,当我insert into try1 (valueA)=XXX,然后将其自动生成的还体现在Try2

的ID

(是基于第一创建一个外键关联的解决办法吗?)

我使用phpMyAdmin和PHP插入查询。任何可能的方式将有所帮助,谢谢

+0

为什么不只是添加try1表中的valueb列? – symcbean

回答

4

我认为你正在寻找一个触发 - 是这样的:

DELIMITER $$ 
CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    TRIGGER `CopyTry1RowToTry2` AFTER INSERT ON `try1` 
    FOR EACH ROW BEGIN 
     INSERT INTO `try2` (`id`,`value`) VALUES(NEW.`id`,NEW.`value`) 
    END; 
$$ 
DELIMITER ; 
+0

SQL查询: CREATE TRIGGER'CopyTry1RowToTry2' INSERT ON'AFTER try1' FOR EACH ROW BEGIN INSERT INTO'try2' SET ID = NEW.ID; MySQL说: #1064 - 你的SQL语法错误;检查对应于你的MySQL服务器版本的手册,在第3行附近使用正确的语法 – Yahoo

+0

这是一个相当普遍的错误,哈哈。恐怕你需要完成研究,以满足你的需求 - 特定 - 只是谷歌“MySQL触发示例”。我已经更新了我的答案,并且没有错误地为我运行 – GDP

2

在Try2提及Try1 ID as foriegn键。像:

CREATE TABLE Try2 (id INT, Try1_id INT, valueb INT, 
        INDEX par_ind (Try1_id), 
        FOREIGN KEY (Try1_id) REFERENCES Try1(id) 
         ON DELETE CASCADE 
) ENGINE=INNODB; 

有关foriegn项的详细信息请参阅本

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

+0

插入try1后,当我做了select * try2我没有得到任何结果 – Yahoo

+0

嘿,它不是这样的;我想你会感到困惑;你不会在id表中自动获取id,而是当你插入子表时,你可以使用PKID并将它插入FK列的子表中。如果你想,自动插入到子表中,那么你需要一个触发器。 – Rahul