2017-03-02 8 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) 
); 

をそれとも、TRIGGERを作成し、それが未設定だが、フィールドwolf_objectがnullでない場合animal_color設定、またはそれヌル

関連する問題