我有一个包含3列的表——id(pk)、pageId(fk)、name.我有一个php脚本,它将大约5000条记录转储到表中,其中大约一半是重复的,具有相同的pageId和名称.pageId和name的组合应该是唯一的.在php中循环脚本时,防止重复项保存到表中的最佳方法是什么?
我有一个包含3列的表——id(pk)、pageId(fk)、name.我有一个php脚本,它将大约5000条记录转储到表中,其中大约一半是重复的,具有相同的pageId和名称.pageId和name的组合应该是唯一的.在php中循环脚本时,防止重复项保存到表中的最佳方法是什么?
第一步是在表上设置一个唯一的键:
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
然后你必须决定当有复制品时你想做什么.你应该:
忽略它?
INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
是否覆盖以前输入的记录?
INSERT INTO thetable (pageid, name, somefield)
VALUES (1, "foo", "first")
ON DUPLICATE KEY UPDATE (somefield = 'first')
INSERT INTO thetable (pageid, name, somefield)
VALUES (1, "foo", "second")
ON DUPLICATE KEY UPDATE (somefield = 'second')
更新一些计数器?
INSERT INTO thetable (pageid, name)
VALUES (1, "foo"), (1, "foo")
ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)