Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 类表继承模型的INSERT语句_Sql_Postgresql_Inheritance_Foreign Keys_Insert Into - Fatal编程技术网

Sql 类表继承模型的INSERT语句

Sql 类表继承模型的INSERT语句,sql,postgresql,inheritance,foreign-keys,insert-into,Sql,Postgresql,Inheritance,Foreign Keys,Insert Into,我有两个表,定义如下: create table MY_COMPONENT ( ID uuid, VERSION integer not null, CREATE_TS timestamp, CREATED_BY varchar(50), UPDATE_TS timestamp, UPDATED_BY varchar(50), DELETE_TS timestamp, DELETED_BY varchar(50), DTYPE varchar(31), -- PRODUCT_NUMBER var

我有两个表,定义如下:

create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)

BASE是MY_组件的一个子类

我有以下限制:

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on DEIPRODUCTCONFIG2_MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 

alter table DEIPRODUCTCONFIG2_BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references DEIPRODUCTCONFIG2_MY_COMPONENT(ID)
我想做的是

INSERT INTO BASE(ID, VERSION, PRODUCT_NUMBER, DESCRIPTION, MANUFACTURER);
正如我发现的那样,这种确切的语法不起作用,因为
BASE
没有
产品编号
说明
、或
制造商
,因为它们存储在
MY\u组件
表中。我还尝试使用
NEWID()
myu组件中插入一行,并使用相同的
ID
尝试插入
BASE
。我也尝试了相反的方法,首先插入
BASE
,然后使用其
ID
插入
MY\u组件。这两个都会引发有关唯一约束冲突的错误


我很清楚,我对数据库编程非常陌生。这些表和约束不是我创建的;我正在使用CUBA平台进行开发,这些表创建脚本是自动为我生成的。我确实理解CREATE语句的语法,但是外键的用途和用法我并不清楚。也许这就是我缺失的一环。但是任何指导都将不胜感激。

我可能遗漏了一点,但我无法重现您的问题,在
我的\u组件中插入
然后
对我来说似乎很有用

无论如何,如果要使用存储过程执行此操作,请参见:

CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql /

完整答案

PostgreSQL 9.6架构设置

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |
查询1

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |
查询2

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |
查询3

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |
查询4

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |
查询5

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |
查询6

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |
查询7

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
/
create table MY_COMPONENT (
ID uuid,
VERSION integer not null,
CREATE_TS timestamp,
CREATED_BY varchar(50),
UPDATE_TS timestamp,
UPDATED_BY varchar(50),
DELETE_TS timestamp,
DELETED_BY varchar(50),
DTYPE varchar(31),
--
PRODUCT_NUMBER varchar(255),
DESCRIPTION varchar(255),
MANUFACTURER varchar(100),
--
primary key (ID)
)
/
create table BASE (
ID uuid,
primary key (ID)
)
/

create unique index IDX_DEIPRODUCTCONFIG2_MY_COMPONENT_UK_PRODUCT_NUMBER 
on MY_COMPONENT (PRODUCT_NUMBER) where DELETE_TS is null 
/
alter table BASE add constraint FK_DEIPRODUCTCONFIG2_BASE_ID 
foreign key (ID) references MY_COMPONENT(ID)
/


CREATE FUNCTION addbase(
    version INTEGER,
    product_number VARCHAR(255)
  --
) RETURNS VOID AS $$
DECLARE
    uid uuid := uuid_generate_v4();
BEGIN
    INSERT INTO my_component(id,version,product_number) 
    VALUES(uid, version,product_number);
    INSERT INTO base(id) 
    VALUES(uid);
END ;
$$ LANGUAGE plpgsql / 
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values(uuid_generate_v4(), 1,'1-dynamic')
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
insert into BASE(ID) 
  values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
select addbase( 44,'3-stored-procedure')
| addbase |
|---------|
|         |
select * from MY_COMPONENT
|                                   id | version | create_ts | created_by | update_ts | updated_by | delete_ts | deleted_by |  dtype |     product_number | description | manufacturer |
|--------------------------------------|---------|-----------|------------|-----------|------------|-----------|------------|--------|--------------------|-------------|--------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |       1 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |          1-dynamic |      (null) |       (null) |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |       2 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) |           2-static |      (null) |       (null) |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |      44 |    (null) |     (null) |    (null) |     (null) |    (null) |     (null) | (null) | 3-stored-procedure |      (null) |       (null) |
select * from BASE
|                                   id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |

你完全正确。我试图通过函数运行我的查询,以运行Cuba Studio内置的更新脚本。我将测试脚本移到了INIT_数据脚本中,Cuba在创建数据库时运行该脚本,并且成功插入了数据。我不确定这是否是他们这边的错误。谢谢你善良的灵魂。@不客气,如果你想一次完成双插入,我添加了一个存储过程;)