gpt4 book ai didi

php - 插入mysql时 key 冲突

转载 作者:行者123 更新时间:2023-11-29 08:28:09 25 4
gpt4 key购买 nike

我有这个 SQL 代码,它插入到名为 daily 的数据库中。我定期更新每日数据库,如下所示:

INSERT INTO daily 
(SELECT * FROM dailytemp
WHERE trim(`Point`) <>''
AND trim(`Point`) IN (Select trim(`Point`) FROM `data`));

我相信我收到错误是因为两个表都有 id 主列。

我想要插入数据,但会为找到的任何重复项生成一个新 ID。

我尝试列出列名称,但大约有 20 列,这可能会使过程变得麻烦。

我最好的选择是什么?

编辑

daily和daily_temp的表定义相同,都是varchar(100),id为(bigint)

id bigint
col1 varchar(100)
col2 varchar(100)
col3 varchar(100)
etc..

最佳答案

一个可能的解决方案可能是使用 BEFORE INSERT 触发器和单独的表进行排序(如果您不介意的话)。

序列表

CREATE TABLE daily_seq(id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY);

现在触发

DELIMITER $$
CREATE TRIGGER tg_daily_insert
BEFORE INSERT ON daily
FOR EACH ROW
BEGIN
INSERT INTO daily_seq VALUES(NULL);
SET NEW.id = LAST_INSERT_ID();
END$$
DELIMITER ;

现在您可以每天插入任何您想要的内容,id 值将替换为唯一的自动递增值。

这里是SQLFiddle 演示

关于php - 插入mysql时 key 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17374579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com