2013-07-24 86 views
0

我有一個表,其中我有一個ID列(主鍵自動增量)和一個名稱列。計算字段值基於其他列插入

我想自動填寫名稱列的值,而根據生成的ID列值在格式插入

<IDColumnValue>_School 

我知道的兩種方法可以做到這一點使用

  1. 觸發
  2. 首先插入行,然後基於插入的行ID列值更新其列值

但實際上我想使該字段不可爲空,但要使用第二個選項,我必須使其可以爲空。

在插入行時有沒有任何直接的方法可以使字段不可爲空?

+0

爲什麼不簡單地用一個奇特值填充它,然後更新它呢? –

+0

爲什麼你不想使用觸發器& –

+0

@MichaelKazarian - 觸發器可以在被插入後立即更新插入的行名稱列 –

回答

0

正如我在評論中所說的,您可以使用name列的臨時值。你可以使用像一個請求:

INSERT INTO `table` VALUES('', 'name') /*let's assume name is the real name you want to insert*/ 

我不知道那麼如何使用觸發器,但你可能想要寫的東西是這樣的:

delimiter # 

CREATE TRIGGER update_name_after_insert INSERT ON `table` 
for each row 
begin 
    update `table` set name = CONCAT_WS("_", id, name) 
end# 
0

它的火鳥工作,但我認爲,它must work in MySQL因爲MySQL有new/old運營商。對於表XYZ的Bellow觸發器具有字段B和C(非空)。

CREATE OR ALTER trigger xyz_bi0 for xyz 
active before insert position 0 
AS 
begin 
    new.c=new.b||' some text';--this construction must work in MySQL 
end 
相關問題