我正在使用继承,但遇到了问题。
如果我运行:
我得到了1。
但是当我尝试运行这个时:
我得到的是:
如果我运行:
select count(*) from estate_properties where id = 86820;
我得到了1。
但是当我尝试运行这个时:
insert into property_images (binary_image, name, property_id) values (16779, 'IMG_0096.jpg', 86820)
我得到的是:
********** 错误 **********
错误:在表“property_images”上插入或更新违反了外键约束“property_images_property_id_fkey” SQL状态:23503 详细信息:关键字(property_id)=(86820)在表“estate_properties”中不存在。
estate_properties
表上的ID
是SERIAL
。
注意:另一个表 apartments
继承自 estate_properties
,并且 86820 被添加到其中。这会有什么影响吗?另外为什么我仍然可以从父表选择 ID。
编辑:更仔细地查看文档:
http://www.postgresql.org/docs/9.5/static/ddl-inherit.html
我想实现这个:
5.9.1. 注意事项
- 指定另一个表的列 REFERENCES cities(name) 将允许其他表包含城市名称,但不包括首都名称。此情况没有好的解决方法。
EDIT2: 这是外键的声明:
CONSTRAINT property_images_property_id_fkey FOREIGN KEY (property_id)
REFERENCES estate_properties (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION