2011-07-26 83 views
1

我确实有一个表单字段,其中包含将放在mysql中不同表中的值。用外键插入mysql

它们都与外键连接。

我如何将这些值放到不同的表中。

伪表:

users_table: 
userId|userlogin 

user_info: 
info_id|userId|name|surname 

user_contact: 
contact_id|userId|phone|email 


form includes: 
userlogin 
name 
surname 
phone 
email 
在我的研究

,我发现我可以使用mysql_insert_id到FKS联系,但我不知道这是否会导致问题如果在网站高负荷(DIFF。请求同时发送)。

我还发现,我可以设置触发器来创建新的FK值:

CREATE TRIGGER ins_kimlik AFTER INSERT ON hastalar 
for each row 
insert into hasta_kimlik set idhasta = new.idhasta 

,但我不知道如何将数据添加到他们。我可以使用
UPDATE table SET (name, surname) VALUES ('John', 'Brown') WHERE info_id = LAST_INSERT_ID();

但它不觉得本地的方式。

最佳实践是什么?

回答

1

我发现我可以使用mysql_insert_id到FKS联系,但我不知道这是否会导致 问题,如果没有在网站高负荷(DIFF。在同一时间发送的请求)。

mysql_insert_id返回由使用当前数据库连接产生最后一个自动递增值。

其他进程在其他连接上做什么并不重要。这是安全的。你会得到正确的价值。

但它不感觉原生的方式。

nope。正确的做法是:

  • INSERT用户
  • 获取ID
  • INSERT USER_INFO
+0

太感谢你了,尤其对于粗体句子=) –

+0

一两件事,我不知道的目的然后使用触发器,这是否有用,或者有什么方法可以使其适用于这种情况。也许对多对多的关系,但其他,我不知道... –

+0

在这种特殊情况下,用户的触发器不知道你想插入user_info表中,所以它根本没用。更好地保持简单... – peufeu

1

如果表通过外键连接,您不应该从基本表(users_table在这里)开始,然后添加user_info表然后添加到user_contact表中,或者反过来添加。只要你在其他表格中填写了包含fk主键的表格,那么你可以很容易地添加。

  • INSERT SQL命令:

INSERT INTO表名(列1,列2,栏3,...)VALUES(值1, 值2,值3,...)

这是你在问什么?