Mysql 使用连接函数设置字段的默认值
我想创建一个表,其中第一列和第二列将连接到第三列Mysql 使用连接函数设置字段的默认值,mysql,Mysql,我想创建一个表,其中第一列和第二列将连接到第三列 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
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
如果出于任何原因无法在insert语句中执行此操作,则触发器可能是您唯一的选择。如果出于任何原因无法在insert语句中执行此操作,则触发器可能是您唯一的选择。如果
Image\u Id
始终是仅包含其他两列,如注释中所述,没有理由将其作为表中的另一列—只需创建一个视图即可动态提供它:
CREATE OR REPLACE VIEW image_ids_views
AS
SELECT id, camera_id, CONCAT(id, '-', camera_id) AS image_id
FROM image_ids
如果
Image\u Id
始终是始终是仅包含其他两列,如注释中所述,则没有理由将其作为表中的另一列-只需创建一个视图即可动态提供:
CREATE OR REPLACE VIEW image_ids_views
AS
SELECT id, camera_id, CONCAT(id, '-', camera_id) AS image_id
FROM image_ids
Q:在创建表时有什么方法可以做到这一点吗? A:不,不可能像您描述的那样使用默认值声明列,因为表达式将指定给其他两列的值连接在一起 默认值必须是常量 参考: 插入前的
触发器(如您所示)是完成此功能的唯一方法。(您可能还想考虑在更新< /COD>触发器之前实现<代码>。)< /P>
触发器定义主体中的SET语句看起来不正确,您可能需要:
SET NEW.Image_id = CONCAT(NEW.id,'-',NEW.camera_id);
Q:在创建表时有什么方法可以做到这一点吗?
A:不,不可能像您描述的那样使用默认值声明列,因为表达式将指定给其他两列的值连接在一起
默认值必须是常量
参考:
插入前的触发器(如您所示)是完成此功能的唯一方法。(您可能还想考虑在更新< /COD>触发器之前实现<代码>。)< /P>
触发器定义主体中的SET语句看起来不正确,您可能需要:
SET NEW.Image_id = CONCAT(NEW.id,'-',NEW.camera_id);
这只是一个默认值,还是图像Id
必须始终包含其他两个字段?始终包含这两个字段触发器定义主体中的SET
语句看起来不正确。您可能需要:SET NEW.Image\u id=CONCAT(NEW.id,'-',NEW.camera\u id)
这只是一个默认值,还是图像Id
必须始终包含其他两个字段?始终包含这两个字段触发器定义主体中的SET
语句看起来不正确。您可能需要:SET NEW.Image\u id=CONCAT(NEW.id,'-',NEW.camera\u id)代码>谢谢Mureinik,但是这个Image\u id是我的脚本查找图像位置索引的主列。我们可以在默认情况下使用两个字段的concat吗mysql可以在表创建中对此进行重新注册。谢谢Mureinik,但是这个Image\u id是我的脚本查找图像位置索引的主列。我们可以在默认情况下使用两个字段的concat吗mysql会在创建表时重新注册。