如果我有以下表結構:Mysql的列值使用增量ID
id
name
account_id
ACCOUNT_ID將永遠是6個字符以字母X開始的字符串,然後用該行的增量ID填充。
有沒有辦法做到這一點只有1行保存?
我目前正在執行2個保存:1插入名稱並生成增量ID,然後另一個抓取增量ID,然後保存account_id值。
如果我有以下表結構:Mysql的列值使用增量ID
id
name
account_id
ACCOUNT_ID將永遠是6個字符以字母X開始的字符串,然後用該行的增量ID填充。
有沒有辦法做到這一點只有1行保存?
我目前正在執行2個保存:1插入名稱並生成增量ID,然後另一個抓取增量ID,然後保存account_id值。
如果使用的MySQL v5.7.6或更新,則可以定義帳戶號碼作爲generated column:
在MySQL 5.7.6的,CREATE TABLE支持 生成的列的指定。生成列的值根據列定義中包含的 表達式計算。
下面的簡單的示例顯示了存儲在SIDEA和sideb列直角三角形的 的邊的長度,並 計算斜邊在sidec長度(平方的 總和的平方根的表另一側的):
CREATE TABLE triangle ( sidea DOUBLE, sideb DOUBLE, sidec DOUBLE
AS (SQRT(sidea * sidea + sideb * sideb)));
INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6,8);
在舊版本中,您可以從表定義中省略帳號,並在表格頂部創建一個視圖,以便即時計算帳號。
如果我們不想將其包含在業務邏輯中,那麼我會建議編寫一個AFTER INSERT觸發器並將帳戶ID生成到其中。
這是插入觸發器後插入一個記錄到另一個表中的SQL Fiddle example。我們可以寫一些類似的東西。
不要以爲你可以做到這一點,請參閱http://stackoverflow.com/questions/2251463/mysql-php-how-to-get-auto-increment-field-value-before-inserting-data –
爲什麼存儲這一切? – Strawberry