我想创建一个表,其中第一列和第二列将连接到第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
答案 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);