我可能錯過了點,但我無法重現你的問題,然後MY_COMPONENT
的BASE
插入似乎魚翅給我...
無論如何,如果你想用一個存儲過程來做到這一點,在這裏它是:
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/
完整的答案
SQL Fiddle
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/
查詢1:
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER)
values(uuid_generate_v4(), 1,'1-dynamic')
Results: 查詢2:
insert into BASE(ID) select ID from MY_COMPONENT where PRODUCT_NUMBER ='1-dynamic'
Results: 查詢3:
insert into MY_COMPONENT(ID,VERSION,PRODUCT_NUMBER)
values('774033f8-52a6-4b1f-8602-03ce3c5a7432', 2,'2-static')
Results: 查詢4:
insert into BASE(ID)
values('774033f8-52a6-4b1f-8602-03ce3c5a7432')
Results: 查詢5:
select addbase(44,'3-stored-procedure')
Results:
| addbase |
|---------|
| |
查詢6:
select * from MY_COMPONENT
Results:
| 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) |
查詢7:
select * from BASE
Results:
| id |
|--------------------------------------|
| e48124ff-a26c-4d10-93a7-48da77b613e6 |
| 774033f8-52a6-4b1f-8602-03ce3c5a7432 |
| b6ecb3ce-e3c2-4f68-8a19-9cfceeba1263 |
你是絕對正確的。我試圖通過該函數運行我的查詢來運行內置於古巴工作室的更新腳本。我將測試腳本移動到古巴在創建數據庫和成功插入數據時運行的INIT_DATA腳本。我不確定這是否是一個錯誤。謝謝你的靈魂。 –
@沒有人歡迎你,我添加了一個存儲過程,如果你想要做的雙插一氣呵成;) – Blag