2017-03-02 34 views
1

我想爲這是從一個複合型創建表的字段設置默認值,但我得到一個錯誤:如何從複合類型創建表格時設置默認值?

PLSQL $ cat ../animal2.sql 
DROP TYPE IF EXISTS zoo_t CASCADE; 
DROP TYPE IF EXISTS animal_t; 
CREATE TYPE animal_t AS (
    animal_id   integer, 
    animal_color  varchar, 
    animal_name   varchar 
); 
CREATE TYPE zoo_t AS (
    wolf_object   animal_t, 
    bear_object   animal_t  
); 
CREATE TABLE zoopark OF zoo_t (
    (wolf_object).animal_color WITH OPTIONS DEFAULT 'black' 
); 
PLSQL $ psql dev < ../animal2.sql 
DROP TYPE 
DROP TYPE 
CREATE TYPE 
CREATE TYPE 
ERROR: syntax error at or near "(" 
LINE 2: (wolf_object).animal_color WITH OPTIONS DEFAULT 'black' 
     ^
PLSQL $ 

有什麼問題嗎?

+0

@RomanTkachuk,但爲什麼不標準語法'WITH OPTIONS'工作? – Nulik

回答

2

您不能直接通過DEFAULT設置字段。但是你可以設置整場:

CREATE TABLE zoopark OF zoo_t (
    wolf_object WITH OPTIONS DEFAULT (NULL, 'black', NULL) 
); 

或者你可以創建觸發器,並設置animal_color如果它沒有設置,但場wolf_object不爲空,或創建整場是否爲空

相關問題