如果所有列都具有不同的值

时间:2015-12-23 05:32:54

标签: mysql

我正在写一个博客网站,但我面临的问题是,我想允许用户创建一个博客,当且仅当他/她的电子邮件地址,博客名称和博客标题的组合与其他任何不同时表中的行。例如,让我们考虑一下这个表: -

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组合,那么他/她将被允许这样做。

由于我是Mysql的新手,我不知道该怎么做,所以请帮我这样做。 我的表结构: - enter image description here

3 个答案:

答案 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;

在使用上面的代码

插入之前,检查表中是否存在匹配的记录