2017-09-28 36 views
0

我已經創建了一個名爲Sequence in Java的數據庫。由於SQL中的約束違規而異常終止Java

stmt = dbConn.createStatement(); 
sql = "CREATE TABLE IF NOT EXISTS Sequence(Seq_Num TEXT Primary Key not null, Seq_ID TEXT, " 
     + E_ID TEXT," + "FOREIGN KEY(E_ID) REFERENCES Emitter(E_ID))"; 
stmt.executeUpdate(sql); 

現在很明顯,我沒有將Seq_ID列標記爲UNIQUE。

所以,當我執行以下語句:

sql = "INSERT INTO Sequence(Seq_Num, Seq_ID, E_ID) VALUES('" + value + "','" + model.txtSaveAs.getText() 
     + "','" + model.namesList.get(i) + "')"; 
stmt.execute(sql); 

這是給我這個錯誤:

java.sql.SQLException: [SQLITE_CONSTRAINT] Abort due to constraint violation (column Seq_ID is not unique) 

我該如何解決這個問題?

+0

CREATE TABLE IF NOT EXISTS?該表是否已與seq_id一起存在,因爲它是唯一的? – Optional

+0

不,我從來沒有定義它從一開始就是唯一的 – KulaDamian

+0

'Seq_Num'是'PRIMARY KEY',它是'UNIQUE'(和'NOT NULL')的定義... –

回答

0

問題是表最初包含4列,但我編輯了創建表語句。但是由於表格已經存在,所以這些更改從未在表格中實施過。所以我先用聲明刪除了表格:

DROP TABLE Sequence 

然後再次創建表;這次有3列。

+1

這就是我說的最初:)無論是否有sequence_id,第二列都被視爲序列 – Optional

相關問題