比方說在我的訂單表中的最後一行是如何保證併發線程不會在MYSQL中獲得相同的值?
Order_ID Product
555 Apple
我怎樣才能確保2項目在準確的時間發生的事情不會得到相同的同在Order_ID即556的下一個訂單,因爲這是發生了什麼我。我的表使用INNODB。
其實Order_ID是一個自動增加的字段。我使用Show Table Status查詢並使用[Auto-increment]獲取下一個Order_iD。有什麼建議麼?
比方說在我的訂單表中的最後一行是如何保證併發線程不會在MYSQL中獲得相同的值?
Order_ID Product
555 Apple
我怎樣才能確保2項目在準確的時間發生的事情不會得到相同的同在Order_ID即556的下一個訂單,因爲這是發生了什麼我。我的表使用INNODB。
其實Order_ID是一個自動增加的字段。我使用Show Table Status查詢並使用[Auto-increment]獲取下一個Order_iD。有什麼建議麼?
與AUTO_INCREMENT
屬性定義Order_ID
列,讓MySQL的賦值爲你(你然後檢索通過詢問的last_insert_id
司機成功插入後):
ALTER TABLE orders MOFIFY Order_ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;
然後,插入記錄你根本不提供Order_ID
值,它會自動分配:
INSERT INTO orders (Product) VALUES ('Apple');
我相信你AR E「硬編碼」的ORDER_ID + 1 ...
請您表中使用AUTO_INCREMENT,它會向你保證它不會是在Order_ID重複
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
在你的情況,使副本你表(備份),修改你的表並添加一個auto_increment,然後再次導入
其實在Order_ID是一個自動遞增字段.... ???我使用Show Table Status查詢並使用[Auto-increment]獲取下一個Order_iD。有什麼建議麼? –
@ManishPradhan:你可以嘗試閱讀的手冊,其中兩個jcho360和我在我們的答案鏈接... – eggyal
@ManishPradhan如果你有一個自動遞增字段,則'last_insert_id'是所有你需要 –
在MyISAM中使用表鎖和在InnoDB中鎖行 –
默認情況下INNODB不是行鎖嗎? –
不,你必須執行它閱讀http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html –