當我在用戶表中插入新記錄時,首先檢查電子郵件和暱稱尚未添加。另一個同時註冊相同數據的用戶有可能是我的錯誤結果嗎?澄清:策略查詢執行
連接1:
> SELECT * FROM account WHERE username = 'test';
空集(0.00秒)
連接2:
> SELECT * FROM account WHERE username = 'test';
空集(0.00秒)
> INSERT INTO account(username) VALUES ('test');
查詢行,1行受影響(0.01秒)
連接1:
> INSERT INTO account(username) VALUES ('test');
錯誤。重複密鑰
我想知道的是,如果MySQL以這種方式工作,通過在查詢時運行查詢以及使用最佳實踐。 我注意到在轉換過程中,其他連接所做的更改不可見。爲什麼?您可以在轉換之外使用SELECT ... FOR UPDATE?大量使用外鍵來確保數據完整性是一種推薦的做法?
編輯: 換句話說。忽略這個愚蠢的例子。我想誰登記下一個用戶有一個年齡比所有那些已經
> SELECT MAX (age) FROM account;
[...檢查,如果用戶的年齡較高...]
> INSERT INTO accounts (age) VALUES ('$ var');
更大怎樣確保有兩個用戶在同一個野外陣營有風險嗎?
他已經有一個唯一索引:「*錯誤重複鍵*」 – 2011-04-17 13:53:47
@ypercube:是的,這是一個最好的做法反正)) – zerkms 2011-04-17 13:58:52