2012-11-03 5 views
8

Ich bin neu in hsqldb. Ich entwickle einfache Anwendung, um einige Eingaben vom Benutzer zu erhalten. Also nach eingebetteter Datenbank gesucht und gefunden hsqldb ist die Lösung für meine Anforderung.Erstellen Sie Tabellensyntax nicht in HSQL

Ich habe einige create-Tabellensyntax, aber es wirft Ausnahme.

(Diese Abfrage ausgeführt von Netbeans Datenbank-Dienste)

Abfrage:

CREATE TABLE company (
    comp_name varchar(100) NOT NULL, 
    comp_id int(40) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (comp_id) 
); 

oder

CREATE TABLE company (
    comp_name varchar(100) NOT NULL, 
    comp_id int(40) NOT NULL IDENTITY 
); 

hsql db führt den Fehler:

Error code -5581, SQL state 42581: unexpected token: (: line: 3 
Line 2, column 1 

Execution finished after 0 s, 1 error(s) occurred. 

freundlicher hel p me out ..

Vielen Dank im Voraus ..

Prost ...!

+0

Ich habe die unten Abfrage für meine verwendet Anforderung. ** CREATE TABLE Firma ( comp_name varchar (100) NOT NULL, comp_id INTEGER GENERIERT DURCH DEFAULT AS IDENTITY (start mit 1) ); ** – Dhinakar

Antwort

18

Verwenden Sie , ohne die Feldlänge anzugeben, da dies für Int-Felder nicht erforderlich ist. Es wird für die Felder VARCHAR und DECIMAL usw. benötigt.

CREATE TABLE company (
    comp_name varchar(100) NOT NULL, 
    comp_id int 
); 

Um Autoinkrement:

ALTER TABLE company ALTER COLUMN comp_id 
SET GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1); 

Alternativ:

CREATE TABLE company (
    comp_name varchar(100) NOT NULL, 
    comp_id int GENERATED BY DEFAULT AS IDENTITY 
             (START WITH 1, INCREMENT BY 1) NOT NULL 
); 

Sie können auch die PRIMARY_KEY hinzufügen wie folgt:

CREATE TABLE company (
    comp_name varchar(100) NOT NULL, 
    comp_id INTEGER NOT NULL, 
    PRIMARY KEY (comp_id) 
); 
+0

Danke .. Wenn ich die erste Abfrage ausführen funktioniert gut. Aber die zweite Abfrage wirft die Ausnahme ** Fehlercode -5532, SQL-Status 42532: Primärschlüssel bereits vorhanden Zeile 1, Spalte 2 ** – Dhinakar

+0

@DhinaKaran: 'IDENTITY' Schlüsselwort macht es für Sie. ** Ich denke, Sie sind in Ordnung mit der ersten Abfrage selbst **, sonst versuchen Sie die aktualisierte zweite Abfrage. –

+0

Ya. Es funktioniert Aber ich habe noch ein Problem mit der Abfrage einfügen ** INSERT INTO company (comp_name) VALUES ('ABC'); ** sagt ** Fehlercode -10, SQL-Status 23502: Integrität Einschränkung Verletzung: NOT NULL Check-Einschränkung; SYS_CT_17649 Tabelle: COMPANY-Spalte: COMP_ID ** – Dhinakar

Verwandte Themen