我在mysql数据库中有一个表,有两个字段:
id(自动递增字段)。
邮政编码。
插入新记录时,两个字段的值应该相同。因此,我应该用id值更新post\ id,同时确保用正确的值更新字段,而不是用任何其他新插入的记录值。
我尝试了此sql语句,但速度非常慢,我不确定是否选择了正确的值:
set @auto_id := (SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='table_name'
AND TABLE_SCHEMA=DATABASE() );
update table_name set post_id= @auto_id where id=@auto_id ;
我对mysql没有很长的经验,我不能改变表结构。
2条答案
按热度按时间nzk0hqpo1#
您所采用的方法也不是事务安全的。
我能想到的最好的选择是使用触发器
编辑:根据@lagripe的提及
或者你可以考虑使用
LAST_INSERT_ID
```insert into table_name values ( .... );
update table_name set post_id = LAST_INSERT_ID();
CREATE TABLE Table1(
id DOUBLE,
post_id DOUBLE as (id)
);
izj3ouym2#
您可以使用触发器:
从现在起,无论您在post\u id列中插入什么值,都将被自动插入的id替换。
测试:
要扣动扳机: