我有一個表稱爲具有4個唯一列的用戶,當我插入數據在email
它不會給我任何錯誤,並插入數據,即使當該列中已存在相同的值。插入重複的數據與唯一索引
這裏是我的數據庫結構:
$user = "CREATE TABLE IF NOT EXISTS users(
id INT UNSIGNED AUTO_INCREMENT,
fb_id BIGINT UNSIGNED NULL,
google_id BIGINT UNSIGNED NULL,
fname VARCHAR(255) NOT NULL,
lname VARCHAR(255) NULL,
email VARCHAR(320) NOT NULL,
username VARCHAR(20) NULL,
password VARCHAR(255) NULL,
access_token TEXT NULL,
type ENUM('facebook','google','site') NOT NULL,
gender ENUM('m','f','o') NULL,
reg_date DATE NOT NULL,
token_expire DATETIME NULL,
PRIMARY KEY(id),
UNIQUE(email,username,fb_id,google_id)
)";
但是,當我創建我的結構如下表:
$user = "CREATE TABLE IF NOT EXISTS users(
id INT UNSIGNED AUTO_INCREMENT,
fb_id BIGINT UNSIGNED NULL UNIQUE,
google_id BIGINT UNSIGNED NULL UNIQUE,
fname VARCHAR(255) NOT NULL,
lname VARCHAR(255) NULL,
email VARCHAR(320) NOT NULL UNIQUE,
username VARCHAR(20) NULL UNIQUE,
password VARCHAR(255) NULL,
access_token TEXT NULL,
type ENUM('facebook','google','site') NOT NULL,
gender ENUM('m','f','o') NULL,
reg_date DATE NOT NULL,
token_expire DATETIME NULL,
PRIMARY KEY(id)
)";
它給了我一個錯誤時,有一個重複的條目。
使用這些方法中的任何一種創建表不會產生任何錯誤。在創建表格後,我使用phpmyadmin驗證了所有這些列在兩種方法中都有唯一的索引。
'UNIQUE(電子郵件,用戶名,fb_id ,google_id)'不會使**每一個**都是唯一的,而是**它們的組合**。這意味着如果其他3個值中的任何值不同,則可以根據需要多次插入相同的電子郵件。 –