2012-02-19 76 views
0

在我的MySQL表我有兩個字段,idorderid是一個自動遞增的主鍵,我想order的初始值以匹配這一點,但也可編輯,而不是一個鍵,沒有唯一性約束。我的數據庫插入方法如何實現這一點?是否可以這樣做,而不需要查找最後插入的ID?自動遞增的字段不是一個主鍵

我使用的是巴黎/ idiorm所以利用自己的特點的解決方案將是得心應手,雖然普通的SQL和PHP是罰款了。

+0

聽起來像是一個有問題的設計給我。 – markus 2012-02-19 16:29:25

+0

@markus爲什麼這麼說? – wheresrhys 2012-02-19 16:56:49

+0

因爲它會創建一個依賴項並威脅數據庫的完整性,所以它會保留不需要的冗餘信息,這些信息可能會成爲一個陷阱。 – markus 2012-02-19 17:04:15

回答

3

在MySQL(從版本5.0.2),您可以創建觸發器。

請嘗試對非生產數據庫:

create trigger default_order_value AFTER INSERT ON orders 
    UPDATE order SET order = id WHERE id = new.id; 

,你想它可能不會以這種方式工作,但可以對其進行編輯。這是另一個觸發器示例:

CREATE TRIGGER default_order 
    BEFORE UPDATE ON orders 
    REFERENCING NEW ROW AS n 
    n.order = n.id; 
+0

這看起來很理想。我需要升級MySQL的第一雖然......幸運的是,這是我的juust本地開發機器上目前 – wheresrhys 2012-02-19 18:13:17

+0

我想你一定有正確的想法,但儘管打aroudn很多帶有ETH語法,我不能讓它開始工作。到目前爲止,我有CREATE TRIGGER'default_order_value' AFTER INSERT ON'clusters' FOR EACH ROW BEGIN UPDATE'clusters' SET'order' = [NEW.id WHERE id = NEW.id; END – wheresrhys 2012-02-19 20:34:02

+0

在這裏看到我是如何得到它的工作http://stackoverflow.com/questions/9353042/can-i-update-the-just-added-row-using-mysql-triggers – wheresrhys 2012-02-19 20:50:43

相關問題