2012-03-11 4 views
10

Làm cách nào để tạo khóa chính nhiều cột trong câu lệnh CREATE TABLE bằng cơ sở dữ liệu h2? Từ cuộc điều tra của tôi, các mã để làm như vậy trong cơ sở dữ liệu mySQL và Apache Derby là:h2 sql, tạo bảng có khóa chính nhiều cột?

CREATE TABLE SAMP.SCHED(
    CLASS_CODE CHAR(7) NOT NULL, 
    DAY SMALLINT NOT NULL, 
    STARTING TIME, 
    ENDING TIME, 
    PRIMARY KEY (CLASS_CODE, DAY)); 

Nhưng điều này không làm việc trong h2, nó kết quả trong một 'org.h2.jdbc.JdbcSQLException: Cú pháp lỗi trong Câu lệnh SQL '

Bất kỳ trợ giúp nào được đánh giá cao. Cảm ơn

+1

Nếu tôi hiểu các tài liệu (http://www.h2database.com/html/grammar .html # constraint) đúng cách, không có gì sai với khai báo PRIMARY KEY của bạn - có thể có điều gì khác sai với câu lệnh không? –

+1

Câu lệnh bạn đã đăng cho tôi (không có lỗi cú pháp khi tôi chạy trong cơ sở dữ liệu H2). –

+0

Ôi trời ơi, bạn nói đúng, tôi đã bỏ dấu ngoặc đơn cuối cùng trong mã của tôi để có một dấu ngoặc không khép kín. Xin lỗi các bạn, đó là một sai lầm thực sự ngu ngốc. Xin lỗi vì sự cố. Thật đáng tiếc là IDE không phân tích cú pháp các chuỗi SQL và kiểm tra những thứ như thế. – keithphw

Trả lời

9

Từ đây:

này nên làm việc:

ALTER TABLE SAMP.SCHED ADD PRIMARY KEY (CLASS_CODE, DAY) 
+0

Đẹp! Cảm ơn bạn đã trả lời nhanh icyrock, nó hoạt động. Tuy nhiên, kỳ lạ đến mức không có cách nào rõ ràng để làm điều đó trong câu lệnh CREATE TABLE. – keithphw

+0

Điều chắc chắn, vui vì nó đã hoạt động! –

+8

'TẠO TẠO (..., TỪ CHÍNH (CLASS_CODE, NGÀY))' hoạt động tốt với cơ sở dữ liệu H2. Cái gì khác phải có sai khi bạn chạy câu lệnh. –