2015-06-10 15 views
0
id name title city 
1 n  t  c 
2 n1  t1 c1 
3 n3  t3 c2 

我想避免在插入插入dublicate(我想忽略dublicate插入新行:創建表和編碼,以避免在mysql中重複新行

首先我創建一個表:

CREATE TABLE IF NOT EXISTS Form (
      id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      name VARCHAR(243) COLLATE utf8_unicode_ci NOT NULL, 
      title VARCHAR(243) COLLATE utf8_unicode_ci NOT NULL, 
      city VARCHAR(243) COLLATE utf8_unicode_ci NOT NULL, 
      UNIQUE (name), 
      UNIQUE (title)  
     ) DEFAULT COLLATE utf8_unicode_ci; 

我的結構表是真的

現在,在SQL代碼:

INSERT INTO Form (name,title,city) VALUES ('name'),('title'),('city') ON DUPLICATE KEY UPDATE name=name AND title = title; 

是我的源代碼是否正確(語法&編碼)?還是需要更多?例如我需要在表中添加唯一嗎?

+0

取決於你認爲是獨一無二的。 'name'和'title'各自是獨一無二的,還是它們在結合時是唯一的? –

+0

沒有沒有組合 – partiz

回答

1

當你擁有了它,現在,隨着UNIQUE (name), UNIQUE (title),這將允許:

id name title city 
1 n1  t1  c 
2 n2  t2  c 
3 n3  t3  c 

,但你也可以有一個組合UNIQUE鍵,這樣就可以有相同的名字和相同的標題,只是沒有當他們被合併。所以UNIQUE (name, title)將讓您有:

id name title city 
1 n1  t1  c 
2 n1  t2  c 
3 n3  t2  c 

通知你有一些名稱相同,有的標題相同,但兩者的名稱和標題的組合永遠是相同的。另外,上述兩個代碼示例將允許重複城市。如果您還希望城市具有獨特性,請將其添加到上述示例中。

而且,您的代碼:

INSERT INTO Form (name,title,city) VALUES ('name'),('title'),('city') ON DUPLICATE KEY UPDATE name=name AND title = title; 

將無法​​正常工作。你的獨特的價值將照顧不插入重複行,所以你的插入代碼應該看起來像這樣:

INSERT INTO Form (name,title,city) VALUES ('Fred', 'Mr.', 'Bedrock');