我正在尝试插入CTE的结果
这是我的两张桌子:
reate table account(
accountid bigint primary key,
customerid bigint not null,
description varchar(50),
foreign key (customerid) references customer(customerid));
create table transaction(
transactionid bigint primary key,
accountid bigint not null,
trantimestamp timestamp not null,
amount numeric(8,2) not null,
foreign key (accountid) references account(accountid));
这是插入CTE结果的插入语句:
insert into transaction (accountid, trantimestamp, amount)
with accounts as(select accountid, sum(amount)amounts from transaction where accountid in(
select accountid from account where description ='saving' order by accountid) group by accountid order by accountid)
select accountid, now(), (0.01*amounts)/100 from accounts;
我无法在表格中插入多行。 我知道插入了第一行,然后它没有插入,因为更新的第一行中仍然卡住了主键。
我还尝试了函数"返回transactionid" 。但它也没有用。
答案 0 :(得分:0)
由于transactionid
不在插入列的列表中,因此您的语句将隐式尝试将NULL插入此列。这不会起作用,因为主键是自动NOT NULL
。
如果您希望自动填充列数增加,请将其定义为bigserial
。这将设置使用序列生成的DEFAULT
。