防止多个主键错误

时间:2014-08-21 10:18:13

标签: java mysql jdbc

这是我在java程序中执行的代码:

public static void createBooksTablesAndSetPK() {
    String selectDB = "Use lib8";
    String createBooksTable = "Create table IF NOT EXISTS books (ID int,Name varchar(20),ISBN varchar(10),Date date )";
    String bookTablePK = "ALTER TABLE BOOKS ADD PRIMARY KEY(id)";
    Statement st = null;
    try (
            Connection con = DriverManager.getConnection(dbUrl, "root", "2323");) {
        st = con.createStatement();
        st.execute(selectDB);
        st.execute(createBooksTable);
        st.execute(bookTablePK);

    } catch (SQLException sqle) {
        sqle.printStackTrace();
    }
}

我使用IF NOT EXIST来创建数据库和表,以防止创建重复的数据库和表以及相应的错误。

但我不知道如何阻止Multiple primary key error,因为程序可能会多次调用createBooksTablesAndSetPK()

错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Multiple primary key defined

1 个答案:

答案 0 :(得分:0)

您的案例中不存在列Book_id。您正在创建一个以ID作为列的表,然后在不存在的列上使用PRIMARY KEY约束更新表。

Create table IF NOT EXISTS books (ID int,Name varchar(20),ISBN varchar(10),Date date )

ALTER TABLE BOOKS ADD PRIMARY KEY(BOOK_id)

尝试在MySQL命令提示符(或MySql Workbench)上运行这些语句,然后查看错误。

您需要像这样更改alter table命令。

ALTER TABLE BOOKS ADD BOOK_id VARCHAR( 255 ), ADD PRIMARY KEY(BOOK_id);