是否可以创建MySQL约束来强制同一行中两列之间的唯一值?
例如:
CREATE TABLE Buddies (
User1 int,
User2 int,
) Type = InnoDB;
我怎么会不允许......
INSERT INTO MyTable SET User1 = '5', User2 = '5'
?
否则用户会非常孤独:)
编辑:这里的重点是,如果可能,我想在MySQL中完全执行此操作而不是在应用程序层中。
答案 0 :(得分:0)
您好这段代码使一行中的两列成为唯一:
ALTER TABLE 'tableName' ADD UNIQUE( 'column1', 'column2');
使用上面的代码,如果您以相同的方式向column1
和column2
插入值,则不会插入该值。
例如:
$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
是否已存在。
希望这对你有所帮助。 : - )