GOLDILOCKS 는 IDENTITY 컬럼을 위해 다음 2가지 속성을 지원합니다.


 - GENERATED BY DEFAULT AS IDENTITY

 - GENERATED ALWAYS AS IDENTITY



GENERATED BY DEFAULT AS IDENTITY 속성의 제약사항과 사용예제입니다.


제약사항

 1. 사용자가 값을 지정한 경우 이를 적용하나, 지정되지 않은 경우 자동값을 생성한다.

 2. 사용자가 값을 지정한 경우, 자동값은 증가하지 않는다.


사용예제

 1. 테이블을 생성합니다.

gSQL> CREATE TABLE T1 (C1 INT GENERATED BY DEFAULT AS IDENTITY, C2 INT);

Table created.

 2. C2 컬럼에 데이터를 삽입합니다.

gSQL> INSERT INTO T1 (C2) VALUES (1); 1 row created. gSQL> INSERT INTO T1 (C2) VALUES (2); 1 row created.

 3. T1 테이블의 데이터를 조회합니다. C1 컬럼의 값이 자동생성 및 증가되었다는 것을 알 수 있습니다.

gSQL> SELECT * FROM T1; C1 C2 -- -- 1 1 2 2 2 rows selected.

 4. C1, C2 컬럼에 데이터를 삽입합니다.

gSQL> INSERT INTO T1 (C1, C2) VALUES (3, 3);

1 row created.

gSQL> INSERT INTO T1 (C2) VALUES (4);

1 row created.

 5. C1 컬럼에 데이터를 직접 넣었을 때, 자동값이 증가하지 않음을 알 수 있습니다.

gSQL> select * from t1;

C1 C2
-- --
 1  1
 2  2
 3  3
 3  4

4 rows selected.



GENERATED ALWAYS AS IDENTITY 속성의 제약사항과 사용예제입니다.


제약사항

 1. 사용자가 값을 지정할 수 없으며, 자동으로 값이 증가한다.


사용예제

 1. 테이블을 생성합니다.

gSQL> CREATE TABLE T1 (C1 INT GENERATED ALWAYS AS IDENTITY , C2 INT); Table created.

 2. 데이터를 적재합니다.

gSQL> INSERT INTO T1 (C2) VALUES (1); 1 row created. gSQL> INSERT INTO T1 (C2) VALUES (2); 1 row created.

 3. C1 컬럼에 값을 지정하려고 시도하는 경우, 에러가 발생합니다.

GSQL> INSERT INTO T1 (C1, C2) VALUES (3, 3); ERR-42000(16399): cannot insert or update a generated always identity column, value shall be a DEFAULT : INSERT INTO T1 (C1, C2) VALUES (3, 3) * ERROR at line 1: