在我的MySQL表我有兩個字段,id
和order
。 id
是一個自動遞增的主鍵,我想order
的初始值以匹配這一點,但也可編輯,而不是一個鍵,沒有唯一性約束。我的數據庫插入方法如何實現這一點?是否可以這樣做,而不需要查找最後插入的ID?自動遞增的字段不是一個主鍵
我使用的是巴黎/ idiorm所以利用自己的特點的解決方案將是得心應手,雖然普通的SQL和PHP是罰款了。
在我的MySQL表我有兩個字段,id
和order
。 id
是一個自動遞增的主鍵,我想order
的初始值以匹配這一點,但也可編輯,而不是一個鍵,沒有唯一性約束。我的數據庫插入方法如何實現這一點?是否可以這樣做,而不需要查找最後插入的ID?自動遞增的字段不是一個主鍵
我使用的是巴黎/ idiorm所以利用自己的特點的解決方案將是得心應手,雖然普通的SQL和PHP是罰款了。
在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;
這看起來很理想。我需要升級MySQL的第一雖然......幸運的是,這是我的juust本地開發機器上目前 – wheresrhys 2012-02-19 18:13:17
我想你一定有正確的想法,但儘管打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
在這裏看到我是如何得到它的工作http://stackoverflow.com/questions/9353042/can-i-update-the-just-added-row-using-mysql-triggers – wheresrhys 2012-02-19 20:50:43
聽起來像是一個有問題的設計給我。 – markus 2012-02-19 16:29:25
@markus爲什麼這麼說? – wheresrhys 2012-02-19 16:56:49
因爲它會創建一個依賴項並威脅數據庫的完整性,所以它會保留不需要的冗餘信息,這些信息可能會成爲一個陷阱。 – markus 2012-02-19 17:04:15