2013-02-11 107 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