使用连接功能设置字段的默认值

时间:2014-09-19 15:08:24

标签: mysql

我想创建一个表,其中第一列和第二列将连接到第3列。

Id     camera_Id     Image-Id
1287   257          257-1287 .(always be concatenation of the two fields )

有什么办法可以在创建表格时执行此操作或

CREATE TRIGGER image_ids 
BEFORE INSERT ON test
FOR EACH ROW
BEGIN
  SET NEW.Image_id = CONCAT(id ' ', camera_id);
END

3 个答案:

答案 0 :(得分:2)

如果由于某种原因无法在插入语句中执行此操作,那么触发器可能是您唯一的选择。

答案 1 :(得分:2)

如果Image_Id 始终只是其他两列的连接,如评论中所述,则没有理由将其作为表中的另一列 - 只需创建一个视图即时提供:

CREATE OR REPLACE VIEW image_ids_views
AS
SELECT id, camera_id, CONCAT(id, '-', camera_id) AS image_id
FROM   image_ids

答案 2 :(得分:1)

问:创建表格时有什么方法可以做到吗?

答:不,不可能像您所描述的那样声明一个具有默认值的列,作为连接分配给其他两列的值的表达式的结果。

DEFAULT值必须是常量。

参考:http://dev.mysql.com/doc/refman/5.5/en/data-type-defaults.html

BEFORE INSERT触发器(如您所示)是实现此功能的唯一方法。 (您可能还想考虑实施BEFORE UPDATE触发器。)

触发器定义正文中的SET语句看起来不对,你可能想要这样:

    SET NEW.Image_id = CONCAT(NEW.id,'-',NEW.camera_id);