Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用连接函数设置字段的默认值_Mysql - Fatal编程技术网

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会在创建表时重新注册。