2013-08-21 61 views
0

我有一個14列的表,我想要做的是避免插入重複的行,即我不想有兩行具有相同的14個值。結合使用SELECT,WHEREAND子句,我們可以避免爲幾列插入重複行,但是我可以對14列應用相同的行嗎?這就像有13 AND它,我甚至不知道它是否會工作或不。他們有任何其他的方式來做到這一點?而我的14欄可以有重複的價值,所以使每個人和每個人都是不可能的。避免在sqlite3中重複行

回答

2

在桌子上剛剛創建唯一索引:

create unique index t_allcols on t(col1, col2, . . . col14); 

這將強制執行領域的所有組合都是唯一的(當他們有值)。

編輯:

您可以在創建表時創建索引。然後當您嘗試插入新數據時,數據庫將自動執行檢查。這是驗證數據的最安全的方法。

如果你想要做一個檢查,當你插入的數據,那麼你可以這樣做:

insert into t(col1, . . ., col14) 
    select val1, . . ., val14 
    where not exists (select 1 from t where col1 = val1 and col2 = val2 and . . .); 
+0

如何檢查獨特性?它會自動工作嗎? – user9517536248

+0

@NottyShinchan。 。 。它自動工作。這是一個獨特的索引(你可以在這裏閱讀有關索引http://www.sqlite.org/lang_createindex.html)。 –

+0

所以如果我必須在腳本中寫入,我在插入之前或插入之後執行。我的主要動機是與腳本一起使用它。它是用python編寫的。你能告訴我「AND」條款的侷限嗎?我們可以使用多少列? – user9517536248