2013-02-11 98 views
1

我要开始输入我想要的东西。数据库输入副本

所以,我有一个表,其中每一行自动获得一个新的ID,并为每个新创建的行在那里,我希望该ID也被放入另一个表到特定的列。

数据库结构:事件

(这是表我想要的ID从复制)

事件ID |其它更多的列

的 -

数据库结构:jointable (这是我想要的“事件ID”复制到表)

事件ID |更多专栏。

所以,我希望我的EventID在我的表“事件”中放入事件时也会自动放入我的连接表中。

+1

? – 2013-02-11 08:09:58

+0

您可以使用“插入式”触发器,但也许有更好的数据库设计,可以避免将相同的数据放在两个地方?你究竟想要完成什么? – 2013-02-11 08:11:54

+0

@Marcus - 您正在使用哪种RDBMS? SQL服务器或MySQL? – 2013-02-11 08:17:39

回答

2

使用返回上次插入的自动生成ID的函数。

的MySqlLAST_INSERT_ID()
SQL服务器SCOPE_IDENTITYIDENT_CURRENT@@IDENTITY

例如在MySQL中,你可以做这样的事情

INSERT INTO event (column1,column2...) VALUES (...); 
SET @last_event_id = LAST_INSERT_ID(); 
INSERT INTO jointable (EventID, column1, column2...) VALUES (@last_event_id, ...); 

UPDATE: 要那么从客户端(php + mysqli)使用mysqli_insert_id()

你在这种情况下,代码如下

$db = mysqli_connect(...); 
... 
$query = "INSERT INTO event (column1, column2...) VALUES (...)"; 
mysql_query($query); 

$last_event_id = mysqli_insert_id($db); 

$query = "INSERT INTO jointable (EventID, column1, column2...) VALUES ($last_event_id, ...)"; 
mysql_query($query); 
您正在使用哪个数据库
+0

它的MySQL我正在使用。我会看看“LAST_INSERT_ID()”,看看我能否得到它的工作,谢谢。 – Marcus 2013-02-11 08:26:12

+0

嗯,我不能让它开始工作,很快搜索了谷歌,并没有发现任何我明白如何使用。我会发布一个链接与我所有的mysql查询,并希望你能告诉我som的方向,当你知道它是如何在我的代码结构。下面是我的代码:pastebin.com/nqmcSJ74 – Marcus 2013-02-11 10:28:05

+0

查看更新的答案。不要使用'mysql_'扩展名,因为它已被弃用。通过[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)使用[预先准备的语句](http://goo.gl/vn8zQ)。您的代码易受sql注入攻击。清理所有用户输入并使用准备好的语句来避免它。 – peterm 2013-02-11 12:31:04