2016-03-06 79 views
1

如果我有以下表結構:Mysql的列值使用增量ID

id 
name 
account_id 

ACCOUNT_ID將永遠是6個字符以字母X開始的字符串,然後用該行的增量ID填充。

有沒有辦法做到這一點只有1行保存?

我目前正在執行2個保存:1插入名稱並生成增量ID,然後另一個抓取增量ID,然後保存account_id值。

+0

不要以爲你可以做到這一點,請參閱http://stackoverflow.com/questions/2251463/mysql-php-how-to-get-auto-increment-field-value-before-inserting-data –

+0

爲什麼存儲這一切? – Strawberry

回答

1

如果使用的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);

在舊版本中,您可以從表定義中省略帳號,並在表格頂部創建一個視圖,以便即時計算帳號。

0

如果我們不想將其包含在業務邏輯中,那麼我會建議編寫一個AFTER INSERT觸發器並將帳戶ID生成到其中。

這是插入觸發器後插入一個記錄到另一個表中的SQL Fiddle example。我們可以寫一些類似的東西。