2012-11-03 37 views
8

Tôi mới dùng hsqldb. Tôi đang phát triển ứng dụng đơn giản để có được một số đầu vào từ người dùng. Vì vậy, Tìm kiếm cơ sở dữ liệu nhúng và tìm thấy hsqldb là giải pháp cho yêu cầu của tôi.Tạo cú pháp bảng không hoạt động trong hsql

Tôi có một số cú pháp tạo bảng nhưng nó ném ngoại lệ.

(Query này được thực hiện bằng cách sử dụng Netbeans dịch vụ cơ sở dữ liệu)

Query:

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

hoặc

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

HSQL db ném lỗi:

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

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

hel Vui lòng p me out ..

Cảm ơn trước ..

Chúc mừng ...!

+0

Tôi đã sử dụng các truy vấn dưới đây để biết tôi yêu cầu. ** CREATE TABLE company ( comp_name varchar (100) NOT NULL, comp_id INTEGER được tạo ra bởi DEFAULT AS IDENTITY (bắt đầu bằng 1) ); ** – Dhinakar

Trả lời

18

Sử dụng INT or INTEGERmà không chỉ định độ dài trường vì không bắt buộc đối với trường loại Int. Nó là bắt buộc đối với các trường loại VARCHARDECIMAL v.v.

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

Để tăng tự động:

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

Hoặc:

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

Bạn cũng có thể thêm các primary_key như sau:

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

Cảm ơn .. Nếu tôi thực thi truy vấn đầu tiên hoạt động tốt. Nhưng truy vấn thứ hai ném ngoại lệ ** Mã lỗi -5532, trạng thái SQL 42532: khóa chính đã tồn tại Dòng 1, cột 2 ** – Dhinakar

+0

@DhinaKaran: Từ khóa 'IDENTITY' tạo cho bạn. ** Tôi nghĩ bạn tốt với truy vấn đầu tiên **, nếu không hãy thử truy vấn thứ hai được cập nhật. –

+0

Ya. Làm việc của nó Nhưng tôi vẫn còn có một vấn đề với chèn truy vấn ** INSERT INTO công ty (comp_name) GIÁ TRỊ ('ABC'); ** nói ** Mã lỗi -10, trạng thái SQL 23502: vi phạm ràng buộc toàn vẹn: NOT NULL kiểm tra ràng buộc; Bảng SYS_CT_17649: cột COMPANY: COMP_ID ** – Dhinakar

Các vấn đề liên quan