我想为从复合类型创建的表的字段设置默认值,但我得到了一个错误:
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 $ 这里的问题是什么?
发布于 2017-03-03 04:27:46
默认情况下不能直接设置字段。但您可以设置整个字段:
CREATE TABLE zoopark OF zoo_t (
wolf_object WITH OPTIONS DEFAULT (NULL, 'black', NULL)
);或者,如果未设置触发器但字段wolf_object不为空,则可以创建触发器并设置animal_color;如果字段为空,则创建整个字段
https://stackoverflow.com/questions/42564794
复制相似问题