我正在写一个博客网站,但我面临的问题是,我想允许用户创建一个博客,当且仅当他/她的电子邮件地址,博客名称和博客标题的组合与其他任何不同时表中的行。例如,让我们考虑一下这个表: -
Email BlogName BlogTitle
abc@gmail.com Coder's world What is coding?
abc@gmail.com Sql world What is sql?
现在,如果用户试图再次在表格中输入值('abc@gmail.com','Coder's Worlds','What is coding?'),那么他/她将不被允许这样做。但是,如果用户尝试插入不同的电子邮件,BlogName和BlogTitle组合,那么他/她将被允许这样做。
答案 0 :(得分:1)
您可以在三列的组合上添加唯一约束:
ALTER TABLE `blog_table` ADD UNIQUE `unique_index`(`Email`(100), `BlogName`(100), `BlogTitle`(100));
这将还删除博客表中可能已存在的所有重复项。
请注意,此约束仅使用三列中每个列的前100个字符来避免#1071-Specified key was too long
错误。
答案 1 :(得分:0)
使这3列独一无二。
以下是使多个字段合成的示例 ALTER TABLE表ADD UNIQUE(' field_1',' field_2',' field_3');
答案 2 :(得分:0)
IF (SELECT 1 = 1 FROM Table WHERE Email=@email and BlogName=@blogname and BlogTitle=@blogtitle) THEN
BEGIN
#return error message do not insert
END;
ELSE
BEGIN
#insert logic here
END;
END IF;
在使用上面的代码
插入之前,检查表中是否存在匹配的记录