2013-02-25 42 views
1

我有1個表:如何防止表中的重複條目?

表1:

used_tag_id | post_id | tag_id

user_tag_id是主鍵。

post_idtag_id有多個條目。

如果我添加post_id = 1和tag_id = 1應該添加一個時間,然後如果我再次添加post_id = 1和tag_id = 1那麼它不應該再次添加到表中。
如何做到這一點?
我應該這樣做與查詢或有任何方式太設計表時呢?

回答

4

創建複合列UNIQUE約束上表中,如

ALTER TABLE tableName ADD CONSTRAINT tb_uq UNIQUE (post_id, tag_id) 
+0

我不能這樣做,因爲1 post_id可以有多個tag_id – 2013-02-25 06:45:35

+0

@HarjeetJadeja是的,你可以。這將允許每個'post_id'多個'tag_id'。嘗試一下。 – 2013-02-25 06:50:47

+1

如果您執行了alter table語句,這些記錄仍然是允許的'used_tag_id,post_id,tag_id','1,1,1','2,1,2','3,1,3','4, 1,4''但不是這個,如果你再次添加'5,1,4' – 2013-02-25 07:00:25

0
  1. 您可以創建組合used_tag_id的主鍵| post_id | tag_id
  2. 您可以在插入代碼前通過代碼檢查數據。
+0

我已經創建了具有自動增量的普通主鍵,但是如何創建組合主鍵? – 2013-02-25 06:50:31

+0

CREATE TABLE INFO( t1ID INT, t2ID INT, PRIMARY KEY(t1ID,t2ID) ) – andy 2013-02-25 06:51:41

+0

ya codeing thing ok。但我不想在數據庫本身想要完成的代碼上進行轉發。 – 2013-02-25 06:51:53