我有一个要在PostgreSQL数据库中执行的SQL文件,该文件包含用于创建表和复合类型的SQL语句,然后将一些值插入到创建的表和复合类型中.
CREATE TYPE address_object AS (
state char(2),
zip char(10)
);
CREATE TYPE embedded_address AS (
state char(2),
zip char(10),
preaddr address_object
);
CREATE TYPE address_value AS (
state char(2),
zip char(10)
);
CREATE TYPE person AS (
name char(20),
age numeric,
address address_object
);
CREATE TABLE customerval (
custno numeric,
addr address_value
);
CREATE TABLE extaddr OF address_object;
CREATE TABLE customerobj (
custno numeric,
addr address_object
);
CREATE TABLE embextaddr OF embedded_address;
CREATE TABLE emp (
emp_id numeric,
emp_info person
);
CREATE TABLE empref (
emp_id numeric,
emp_info person
);
CREATE TABLE extper OF person;
-- Insert data
INSERT INTO customerval VALUES (100, ROW('CA'::char(2), '94065'::char(10)));
INSERT INTO extaddr VALUES (ROW(LEFT('CA', 2), CAST('94065' AS CHAR(10))));
INSERT INTO extaddr VALUES (ROW(LEFT('CA',2),CAST('98765' AS char(10))));
INSERT INTO extaddr VALUES (ROW(LEFT('CA' ,2),CAST('95117' AS char(10))));
INSERT INTO embextaddr VALUES (ROW(LEFT('CA',2),CAST('95117' AS char(10), NULL))));
当我运行该文件时,我收到一些错误,例如第一个INSERT语句: 错误:类型字符(2)的值太长 2STATEMENT:插入extaddr值(ROW(LEFT(‘CA’,2),CAST(‘94065’as CHAR(10); Psql:file.sql:53:错误:类型字符(2)的值太长
在数据库中创建表和复合类型,并且第一次插入成功.由于上述错误,最后三条INSERT语句失败.
INSERT INTO extaddr VALUES (ROW(LEFT('CA', 2), CAST('94065' AS CHAR(10))));```.