2015-01-30 14 views
5

jOOQ ha CREATE TABLE sintassi come dichiarato in the documentation:Crea una tabella con la chiave primaria utilizzando 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(); 

mi chiedo come definire quale colonna appartiene alla chiave primaria? Quindi esiste un modo in jOOQ per creare un'istruzione CREATE TABLE con le informazioni PRIMARY KEY?

Sono particolarmente interessato a una soluzione per SQLite, che non ha la sintassi per aggiungere la chiave primaria in seguito, quindi penso che nel peggiore dei casi devo andare a una soluzione specifica DB?

+0

Un rapido sguardo al manuale e javadoc sembra suggerire questo isn' t disponibile. –

+0

Sì, non sembra che ci sia un modo ... Sospetto di dover creare personalmente la stringa SQL CREATE TABLE. –

risposta

4

Questa funzione è stata implementata per jOOQ 3.8: #4050.

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(); 

Dal jOOQ 3.6 (#3338), è anche possibile utilizzare l'istruzione ALTER TABLE per aggiungere un vincolo dopo la creazione della tabella:

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

La versione 3.8 non è stata ancora rilasciata, corretta? –

+1

@JaysonMinard: Infatti. A causa dell'inizio del secondo trimestre 2016 –

+0

In base a [questo problema GitHub] (https://github.com/jOOQ/jOOQ/issues/5062), questa funzione è stata ridestinata per 3.9. Triste. :( – SPoage