考虑我有一张桌子:
create table product(id int8 not null, ... , primary key (id));
我已经插入了一些记录,所以'产品'不是空的。
然后我需要另一张桌子:
create table order(id int8 not null, ..., primary key (id))
之后我决定在'产品'之间添加连接。和订单实体中的' order'添加:
@NotNull
@ManyToOne
private Product product;
所以在sql中我做了以下:
alter table order add column product int8 not null default (???);
alter table order add constraint FK_order_product foreign key (product) references product;
我应该写什么(???)? 如果我将默认设置为0,那么SQL会抱怨如下: (关键产品(0))不在'产品'表
答案 0 :(得分:0)
看起来你的order
表也不是空的(如果表是空的,它可以正常工作)。在您的情况下,我建议您通过执行
alter table order add column product int8 not null default 0;
然后更改order
表的每一行,以对product
字段中的product
表进行正确引用,最后添加Foreign Key
约束。
此外,如果您的order
表填充了测试数据,您可以在执行脚本之前将其截断,并且在这种情况下您可以使用任何默认值,或者根本不使用它。