2010-06-01 23 views
8

ile özdeşleştirin PostgreSql'de bir sıra tanımlayabilir ve onu bir tablonun birincil anahtarı olarak kullanabilirsiniz. HsqlDB'de, herhangi bir kullanıcı tanımlı diziye bağlanmayan bir otomatik artış kimliği sütunu oluşturulmaya devam edilebilir. HsqlDB'de bir otomatik artışlı kimlik sütununun üreteci olarak kullanıcı tanımlı bir dizinin kullanılması mümkün mü? PostgreSQL içindeBir diziyi hsqldb

Numune sql:

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 eşdeğer nedir?

Teşekkürler.

cevap

13

Sürüm 2.0'da bunun için doğrudan bir özellik yoktur. Bunu yapmak için masaya ÖNCE INSERT tetikleyicisi tanımlayabilirsiniz:

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; 

ve şirketin INTO kimliği için

INSERT herhangi vlue kullanmadan eklemek null, 'test' HSQLDB için

Güncelleme DEĞERLER 2.1 ve üstü: Bunu desteklemek için bir özellik eklendi.

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

Kılavuz altında TABLO sonra http://hsqldb.org/doc/2.0/guide/databaseobjects-chapt.html#dbc_table_creation

Ayrıca

, 2.1 ve PostgreSQL STANDART maddede sekansı başvuran ve çevirir TABLE deyimi CREATE kabul ettiği PostgreSQL uyumluluk modu CREATE gör HSQLDB sözdizimi.