hsqldb

2010-06-01 11 views
8

में एक पहचान के साथ एक अनुक्रम लिंक करें PostgreSql में, कोई अनुक्रम परिभाषित कर सकता है और इसे तालिका की प्राथमिक कुंजी के रूप में उपयोग कर सकता है। HsqlDB में, कोई भी एक ऑटो-वृद्धि पहचान कॉलम बनाने में सक्षम हो सकता है जो किसी भी उपयोगकर्ता परिभाषित अनुक्रम से लिंक नहीं करता है। क्या HsqlDB में स्वत: वृद्धि पहचान कॉलम के जनरेटर के रूप में उपयोगकर्ता परिभाषित अनुक्रम का उपयोग करना संभव है? PostgreSQL मेंhsqldb

नमूना एसक्यूएल:

CREATE SEQUENCE seq_company_id START WITH 1; 

CREATE TABLE company (
    id bigint PRIMARY KEY DEFAULT nextval('seq_company_id'), 
    name varchar(128) NOT NULL CHECK (name <> '') 
); 

HSQLDB में बराबर क्या है?

धन्यवाद।

उत्तर

13

संस्करण 2.0 में, इसके लिए कोई सीधी सुविधा नहीं है। ऐसा करने के लिए मेज पर एक से पहले सम्मिलित करें ट्रिगर परिभाषित कर सकते हैं:

CREATE TABLE company (id bigint PRIMARY KEY, name varchar(128) NOT NULL CHECK (name <> '')); 

CREATE TRIGGER trigg BEFORE INSERT 
ON company REFERENCING NEW ROW AS newrow 
FOR EACH ROW 
SET newrow.id = NEXT VALUE FOR seq_company_id; 

और कंपनी में

सम्मिलित करें आईडी के लिए किसी भी vlue का उपयोग किए बिना सम्मिलित अशक्त, 'परीक्षण' HSQLDB के लिए

अद्यतन मूल्यों 2.1 और बाद में: इसका समर्थन करने के लिए एक सुविधा जोड़ा गया है।

CREATE SEQUENCE SEQU 
CREATE TABLE company (id bigint GENERATED BY DEFAULT AS SEQUENCE SEQU PRIMARY KEY, name varchar(128) NOT NULL CHECK (name <> '')); 

देखें तहत गाइड टेबल बनाएं http://hsqldb.org/doc/2.0/guide/databaseobjects-chapt.html#dbc_table_creation

इसके अलावा, 2.1 और बाद में एक PostgreSQL संगतता मोड जिसमें यह स्वीकार करता है PostgreSQL CREATE TABLE बयान डिफ़ॉल्ट खंड में अनुक्रम का संदर्भ और करने के लिए इसे तब्दील हो कि है एचएसक्यूएलडीबी वाक्यविन्यास।