首先,通过使用主键,我正确应用UNIQUE约束吗?
<?php
// Make a MySQL Connection
mysql_connect("localhost", "oassda", "oas53a") or die(mysql_error());
mysql_select_db("o345ja") or die(mysql_error());
// Create a MySQL table in the selected database
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Email),
PNumber VARCHAR(45))")
or die(mysql_error());
echo "Table Created!";
?>
我正在尝试这样做,因此电子邮件和PNumber不能插入重复的行。但是我得到的错误是“列'电子邮件'的列指示符不正确”显然这是一个错误,因为AUTO_INCREMENT仅适用于INT类型。 ...任何想法如何使这两列没有重复?抱歉,我对MySQL的经验不是很久,因为我很久以前就已经这么做了,从那时起就出现了新的错误..
答案 0 :(得分:2)
您在寻找复合主键吗?如果是这样,这是修复错误的代码。
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email,PNumber))")
or die(mysql_error());
如果不是,您只需要一个主键 - AUTO_INCREMENT标志仅用于INT类型。
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email))")
or die(mysql_error());
或者你可能只需要UNIQUE约束,例如
mysql_query("CREATE TABLE PersonInfo(
Email VARCHAR(45) NOT NULL,
PNumber VARCHAR(45),
PRIMARY KEY(Email),
UNIQUE(PNumber))")
or die(mysql_error());
答案 1 :(得分:1)
AUTO_INCREMENT
。答案 2 :(得分:1)
考虑让你的领域更广阔。我有超过45个字符的电子邮件地址。 (即,因为TMDA。)
CREATE TABLE PersonInfo
(
Email VARCHAR(45),
PNumber VARCHAR(45),
PRIMARY KEY (Email, PNumber)
);