2011-11-04 68 views
0

我试图做一个存储过程,使插入到表中。 插入会影响两个表格,它们之间有一个FK。Mysql:插入两个表的过程(FK)

enter image description here

CREATE PROCEDURE `db`.`add_user_hr` (
    IN in_Pass VARCHAR(45), 
    IN in_Value VARCHAR(45), 
    IN in_HR_ID INT, 
    ) 
BEGIN 
    INSERT INTO HR 
     (
      Value 
     ) 
     VALUES 
     (
      in_Value 
     ); 

    INSERT INTO User 
     (
      Password, 
      HR_idHR 
     ) 
     VALUES 
     (
      in_Pass, 
      (Get the ID from HR) 
     ); 
END 

我如何确保正确的ID进入用户。并且 如果在插入HR时出现错误,我该如何确定它向用户插入? Ive 查看“提交”,但不知道它是如何使用的。 还是有更好的方法来做到这一点?

在这个例子中,我有表UserType。这需要 找出女巫后来的用户类型吗?和 我如何在插入用户中,选择 将来的程序?

Thx的所有帮助!

回答

0

如果PK(主键)具有AUTO_INCREMENT选择比你可以做这样的事情:

declare value_id_v INT; 
insert into hr(value) values(value_in); 

set value_id_v = last_insert_id(); 

现在你可以使用value_id_v执行插入。这里是链接阅读有关此功能LAST_INSERT_ID

+0

如果有很多使用此过程在同一时间有一个chanse,last_insert_id();是错误的吗? – Linqan

+0

该功能在会话级别上工作。 – ravnur