MySQL:在* same *行中的两列之间创建唯一值约束

时间:2014-01-27 02:03:19

标签: mysql constraints unique

是否可以创建MySQL约束来强制同一行中两列之间的唯一值?

例如:

CREATE TABLE Buddies (
  User1 int,
  User2 int,
) Type = InnoDB;

我怎么会不允许......

INSERT INTO MyTable SET User1 = '5', User2 = '5'

否则用户会非常孤独:)

编辑:这里的重点是,如果可能,我想在MySQL中完全执行此操作而不是在应用程序层中。

1 个答案:

答案 0 :(得分:0)

您好这段代码使一行中的两列成为唯一:

ALTER TABLE 'tableName' ADD UNIQUE( 'column1', 'column2');

使用上面的代码,如果您以相同的方式向column1column2插入值,则不会插入该值。 例如:

$value1 = 1;
$value2 = 2;
$value3 = 3;
mysql_query("INSERT INTO tableName (column1, column2) VALUES ('$value1', '$value2')"); //This will work.
mysql_query("INSERT INTO tableName (column1, column2) VALUES ('$value1', '$value3')"); //This will work.
mysql_query("INSERT INTO tableName (column1, column2) VALUES ('$value1', '$value2')"); //This WILL NOT work THE SECOND time around because of the unique constraint.

或参考此代码:

$value1 = 1;
$value2 = 2;

$resultSet = mysql_query("SELECT column1 FROM tableName WHERE column1 = '$value1'");
$rows = mysql_num_rows($resultSet);

if($rows >= 1){
    echo $value1 . " already exist.";
}
else{
    $query = mysql_query("INSERT INTO tableName (column1, column2) VALUES('$value1','$value2')");

    if(){
        echo "Value inserted.";
    }else echo mysql_error();
}

上面的代码会在插入两个值之前检查$value1的值,以确定$value1是否已存在。

希望这对你有所帮助。 : - )