Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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,我有一个MYSql表,其中包含id、name、description和status列。id列是自动递增的,并且是主键。现在,我想向表中添加另一个名为“display\u priority”的列。我希望使用此列上的“order by”提取记录 插入记录时,如何自动填充此表(基于ID)? 插入时,显示优先级值无关紧要。在显示记录之前,应在稍后某个时间重新排列。但是,插入的值必须是唯一的 有什么帮助吗?提前谢谢 编辑:我知道这可以通过插入后触发器来完成。如果我想避免触发呢。任何其他方法?您可以添加一个

我有一个MYSql表,其中包含id、name、description和status列。id列是自动递增的,并且是主键。现在,我想向表中添加另一个名为“display\u priority”的列。我希望使用此列上的“order by”提取记录

插入记录时,如何自动填充此表(基于ID)? 插入时,显示优先级值无关紧要。在显示记录之前,应在稍后某个时间重新排列。但是,插入的值必须是唯一的

有什么帮助吗?提前谢谢


编辑:我知道这可以通过插入后触发器来完成。如果我想避免触发呢。任何其他方法?

您可以添加一个
触发器
开关,在插入时更新
显示优先级
,该值是
显示优先级
最大值

CREATE TRIGGER table_name BEFORE INSERT ON display_priority
       FOR EACH ROW SET @sum = (SELECT MAX(display_priority)+1 FROM table_name);

您可以添加一个
触发器
开关,在插入时更新
显示优先权
,该值是
显示优先权
最大值

CREATE TRIGGER table_name BEFORE INSERT ON display_priority
       FOR EACH ROW SET @sum = (SELECT MAX(display_priority)+1 FROM table_name);

如果要避免触发,可以使用当前的
UNIX\u时间戳
current\u时间戳
作为默认值。但是如果同时插入两个或多个
INSERT
,则会出现问题

display_priority TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

如果要避免触发,可以使用当前的
UNIX\u时间戳
current\u时间戳
作为默认值。但是如果同时插入两个或多个
INSERT
,则会出现问题

display_priority TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

取表的最大id并添加1作为自动递增的id预测

INSERT INTO `table_name` (col1, col2, col3) 
SELECT val1, val2, max(id) + 1 AS val3 FROM `table_name`;

<!-- id is auto-incremented -->

Example 

INSERT INTO `users` (name, email, display_priority) 
SELECT 'Dave', 'dave@email.com', max(id) + 1 AS display_priority FROM `users`;
插入“表名”(col1、col2、col3)
从“table_name”中选择val1、val2、max(id)+1作为val3;
例子
插入“用户”(姓名、电子邮件、显示优先级)
选择“Dave”和“Dave”dave@email.com,max(id)+1作为“用户”的显示优先级;

您获取表的最大id,并添加1作为自动递增的id预测

INSERT INTO `table_name` (col1, col2, col3) 
SELECT val1, val2, max(id) + 1 AS val3 FROM `table_name`;

<!-- id is auto-incremented -->

Example 

INSERT INTO `users` (name, email, display_priority) 
SELECT 'Dave', 'dave@email.com', max(id) + 1 AS display_priority FROM `users`;
插入“表名”(col1、col2、col3)
从“table_name”中选择val1、val2、max(id)+1作为val3;
例子
插入“用户”(姓名、电子邮件、显示优先级)
选择“Dave”和“Dave”dave@email.com,max(id)+1作为“用户”的显示优先级;

AUTO\u INCREMENT可以是一个选项。我们只能用一个列实现AUTO\u INCREMENT,我已经用'ID'列实现了。AUTO\u INCREMENT可以是一个选项。我们只能用一个列实现AUTO\u INCREMENT,我已经在使用列“ID”了如果我想避免触发怎么办?你不能使用这个答案:)如果我想避免触发怎么办?你不能使用这个答案:)但是你必须为每个
插入添加这个。它不是默认值。OP不要求默认值。但您必须为每个
插入添加此值。这不是默认值。OP不要求默认值。