在mysql中自动填充两列
我有一个MYSql表,其中包含id、name、description和status列。id列是自动递增的,并且是主键。现在,我想向表中添加另一个名为“display\u priority”的列。我希望使用此列上的“order by”提取记录 插入记录时,如何自动填充此表(基于ID)? 插入时,显示优先级值无关紧要。在显示记录之前,应在稍后某个时间重新排列。但是,插入的值必须是唯一的 有什么帮助吗?提前谢谢在mysql中自动填充两列,mysql,Mysql,我有一个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不要求默认值。