http://powerdb.net/database/postgres/manual/manual-7.2/sql-createtable.html
CREATE TABLE
Name
CREATE TABLE -- define a new table
Synopsis
CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (
{ column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ]
| table_constraint } [, ... ]
)
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH OIDS | WITHOUT OIDS ]
where column_constraint is:
[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | UNIQUE | PRIMARY KEY |
CHECK (expression) |
REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL ]
[ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
and table_constraint is:
[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ... ] ) |
PRIMARY KEY ( column_name [, ... ] ) |
CHECK ( expression ) |
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
[ MATCH FULL | MATCH PARTIAL ] [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
위와 같은 문법을 사용합니다.
그리고 말씀하신 문제점은 뒤의 옵션중에 ON DELETE CASCADE, ON DELETE SET NULL, 등의 옵션을 명기하여 원하는 작업을 할수 있습니다. 참조하시기 바랍니다.
-- 민 님이 쓰신 글:
>> postgresql 7.2.1에서 개발을 하는데요,
>> 이 디비에서는 foreign key 기능이 제공되는지요?
>> 참조하는 자식테이블에서 부모테이블의 데이터를 지워도 아무 에러 없이
>> 삭제되고 자식테이블에만 부모없는 데이터만 남습니다.
>> 혹시 다른 옵션을 줘야하는지요? 여기저기 찾아봐도 잘 모르겠습니다.
>> 답변부탁드립니다.
>> (조건) 부모테이블 -> 프라이머리 키 지정
>> 자식테이블 -> 포린키로 부모테이블 프라이머리 키 설정
>> 이상입니다
|