如果任何行中都不存在值,是否可以插入任何方法? 假设我有一张桌子:
id(auto_increment)|id_user|id_translation
------------------------------------------
39 |5 | 20
-
尝试
INSERT IGNORE INTO `usertranslation`(`id_translation`, `id_user`) VALUES ('20','5')
WHERE not EXISTS (
SELECT * from `usertranslation`
WHERE `id_translation` = '20' AND
`id_user` = '5' )
与replace相似,但对我没有任何作用
答案 0 :(得分:1)
为防止表中的重复,必须使用UNIQUE
constraints。
所以首先您需要像这样更改表:
ALTER TABLE `usertranslation`
ADD CONSTRAINT `unique_user_transaction` UNIQUE KEY(`id_translation`, `id_user`);
更改表格后,您可以使用:
INSERT IGNORE INTO `usertranslation`(`id_translation`, `id_user`) VALUES ('20','5');
请注意INSERT IGNORE
可以防止尝试插入重复项时出错,但也可以增加自动递增字段。
答案 1 :(得分:0)
可以使用:
INSERT IGNORE INTO `usertranslation`(`id_translation`, `id_user`) VALUES ('20','5')
如果存在与新行冲突的约束,则不会插入新行(无错误),
或INSERT
与SELECT
和不 VALUES
INSERT INTO `usertranslation`(`id_translation`, `id_user`)
SELECT '20', '5'
WHERE NOT EXISTS (
SELECT 1 from `usertranslation`
WHERE `id_translation` = '20' AND `id_user` = '5'
)