2011-03-10 139 views
0

使用MySQL,我認爲有一種方法可以做到關係性,但也許我錯了。在表A中插入查詢的插入查詢

我有表A與用戶ID和表B與用戶ID,它的設置等刪除A.userID級聯和刪除B.userID。所以我有一個查詢(使用配置項),插入表A中的信息,我想用相同的用戶ID(PK,AI)在表B中插入一行。有時它會在B.userID行中插入值,有時它會是完全空值。

關於如何做到這一點的想法?

謝謝。

回答

1

我真的需要看到實際的查詢,但我相信這就是你要找的。

當您在CodeIgniter中插入數據時,您可以像這樣獲取插入的主鍵。

$this->db->insert('A',$data); //insert into the table with 'userID' as PK, AI 

$id_of_insert = $this->db->insert_id(); 

$data_for_b = array(
    'field' => 'value', 
    ... 
    'userID' => $id_of_insert //insert the captured PK from A and place in the FK field of B 
); 

$this->db->insert('B', $data_for_b); 
+0

謝謝,作品魅力。希望我知道insert_id函數! – user652650 2011-03-10 01:22:55

+1

http://codeigniter.com/user_guide/是你的朋友。沒有諷刺意圖,對不起,如果你已經知道這一個。 – 2011-03-10 03:02:04

1

最簡單的事情就是寫一個存儲過程來執行插入操作。這既可以在事務中插入也可以接受要添加到B和A中的數據的參數。然後,您的查詢將調用存儲過程而不是直接插入。

0

有,你應該在這個方法考慮幾件事情:

  1. 如果AUTO_INCREMENT是BIGINT它給出錯誤的價值觀。

  2. 如果您在插入內容和其他人插入內容之前讀取該值,您可能會得到錯誤的編號。我建議用不同的獨特的東西來閱讀價值。 (例如用戶註冊中的暱稱)。