Table enrollments
-----------------
id classId userId
-- ------- ------
1 1 1
-- ------- ------
此统计信息后:想要在再次插入{classId=1
,userId=1
}
如果用户插入相同的classId
和userId
,则应拒绝插入。
我已经尝试过了:
INSERT INTO enrollments(classId, userId)
VALUES('{$classId}', '{$userId}')
WHERE
NOT EXISTS(SELECT NULL FROM
enrollments WHERE
classId='{$classId}' AND userId='{$userId}')
答案 0 :(得分:4)
添加classId
和userId
合并为唯一,因此如果先前存在于表格中,则无法插入相同的classId
和userId
。
ALTER TABLE enrollments
ADD CONSTRAINT UC_Person UNIQUE (classId,userId);
答案 1 :(得分:1)
而不是代码
INSERT INTO enrollments(classId, userId)
VALUES('{$classId}', '{$userId}')
WHERE
NOT EXISTS(SELECT NULL FROM
enrollments WHERE
classId='{$classId}' AND userId='{$userId}')
替换为
INSERT INTO enrollments(classId, userId)
SELECT '{$classId}', '{$userId}'
WHERE
NOT EXISTS(SELECT * FROM
enrollments WHERE
classId='{$classId}' AND userId='{$userId}')
示例:您可以尝试使用演示数据
INSERT INTO enrollments(classId, userId)
SELECT 2, 2
WHERE
NOT EXISTS(SELECT * FROM
enrollments WHERE
classId=2 AND userId=2)
答案 2 :(得分:0)
使用INSERT IGNORE而不是INSERT
INSERT IGNORE INTO person_tbl (classId, userId)
VALUES( '{$classId}', '{$userId}')
注意:重复插入时,此语句不会生成错误。
答案 3 :(得分:-1)
删除id并将classId和userId设置为primary。 然后只需进行正常插入,如果它们存在则不再插入。
答案 4 :(得分:-1)
如果你想避免重复,那么制作这些文件(classId,userId)UNIQUE键或者你希望这些文件不为空,那么你可以将这些字段作为PRIMIRY键。
答案 5 :(得分:-1)
将id设为primary,并将id和classid组合为唯一。它将阻止从sql端插入重复。
答案 6 :(得分:-1)
create table enrollments
(
classId int,
userId int
)
ALTER TABLE enrollments
ADD CONSTRAINT UC_Person UNIQUE (classId,userId);
INSERT INTO enrollments(classId, userId)
VALUES(1, 1);
where子句不能在insert语句中输入,请尝试此代码。上面的表结构将不允许插入重复的条目