2015-01-30 9 views
5

jOOQ TABLE-Syntax CREATE als in the documentation angegeben:mit Primärschlüssel jOOQ

create.createTable(AUTHOR) 
     .column(AUTHOR.ID, SQLDataType.INTEGER) 
     .column(AUTHOR.FIRST_NAME, SQLDataType.VARCHAR.length(50)) 
     .column(AUTHOR_LAST_NAME, SQLDataType.VARCHAR.length(50)) 
     .execute(); 

Ich frage mich, wie man definieren, welche Spalte zum Primärschlüssel gehört? Gibt es in jOOQ eine Möglichkeit, eine CREATE TABLE-Anweisung mit PRIMARY KEY-Informationen zu erstellen?

Ich bin speziell an einer Lösung für SQLite interessiert, die keine Syntax hat, um den Primärschlüssel nachträglich hinzuzufügen, also muss ich im schlimmsten Fall zu einer DB-spezifischen Lösung gehen?

+0

Ein kurzer Blick in das Handbuch und javadoc scheint diese isn vorschlagen‘ t verfügbar. –

+0

Ja, es sieht nicht so aus, als gäbe es einen Weg ... Ich vermute, dass ich den SQL-String CREATE TABLE selbst erstellen muss. –

Antwort

4

Diese Funktion wurde für den jooq 3.8: #4050 implementiert.

create.createTable(AUTHOR) 
     .column(AUTHOR.ID, SQLDataType.INTEGER) 
     .column(AUTHOR.FIRST_NAME, SQLDataType.VARCHAR.length(50)) 
     .column(AUTHOR_LAST_NAME, SQLDataType.VARCHAR.length(50)) 
     .constraints(
      constraint("PK_AUTHOR").primaryKey(AUTHOR.ID) 
    ) 
     .execute(); 

Seit jOOQ 3.6 (#3338), können Sie auch die ALTER TABLE Anweisung eine Einschränkung nach dem Erstellen der Tabelle hinzuzufügen:

create.alterTable(AUTHOR) 
     .add(constraint("PK_AUTHOR").primaryKey(AUTHOR.ID)) 
     .execute(); 
+0

Die 3.8-Version ist noch nicht freigegeben, richtig? –

+1

@JaysonMinard: In der Tat. Fällig für das 2. Quartal 2016 –

+0

Laut [dieser GitHub-Ausgabe] (https://github.com/jOOQ/jOOQ/issues/5062) wurde diese Funktion für 3.9 neu ausgerichtet. Traurig. :( – SPoage