MySQL不支持列定義的DEFAULT
選項中的計算列或表達式。
您可以在觸發做到這一點(的MySQL 5.0或更高要求):
CREATE TRIGGER format_stage_name
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END
您可能還需要創建一個類似的觸發器BEFORE UPDATE
。
小心在forename和姓氏,因爲連接NULL
與任何其他字符串連續產生NULL
。根據需要在每列或連接字符串上使用COALESCE()
。
編輯:以下示例僅在NULL
的情況下設置stage_name
。否則,您可以在INSERT
聲明中指定stage_name
,並將其保留。
CREATE TRIGGER format_stage_name
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
IF (NEW.stage_name IS NULL) THEN
SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END IF;
END
我沒有使用MySQL,但是將這個始終覆蓋與級聯值的列?如果你想讓它作爲默認值,你應該可以覆蓋它,所以我認爲你也需要在NEW.stage_name上合併。 – 2008-12-11 19:26:02
@ bill-karwin我在`NEW.aka = CONCAT(NEW.fname,',NEW.lname)``上得到了一個語法錯誤`...看到我的完整命令[** here pastebin **](http ://pastebin.com/FiEUBgcu)...任何指針?? – mOrloff 2012-10-17 21:08:25