数据库表id-key空值和参照完整性

我正在使用SQLce学习数据库。有一些问题,有这个错误:
A foreign key value cannot be inserted because a corresponding primary key value does not exist. 
在尝试保存没有指定一个外键的数据行时,数据的完整性和接受程度如何工作。是不是可以以某种方式将其设置为NULL,这意味着它不会引用另一个表?万一,我该怎么做? (对于整数键字段) 此外,如果使用与其他表中的现有主键对应的有效外键保存行,该怎么办?但随后决定删除该另一个表中的该条目。因此外键将不再有效。我会被允许删除吗?它是如何工作的?我认为它应该简单地重置为空值..但也许它不是那么简单?     
已邀请:
您需要做的是从父级开始插入数据。 因此,如果您有一个订单表和一个引用订单的商品表,您必须先将所有子订单添加到列表中,然后再创建新订单。 您可以获得的许多数据访问库(在C#中有Linq to SQL)将尝试解决此问题。 如果您需要删除实际必须采用其他方式的数据,请在删除父订单记录之前删除这些项目。 当然,这假设您正在强制执行外键,可能不会强制执行密钥,这在批量删除期间可能很有用。     
这是因为表中存在“错误数据”。检查主表中是否包含所有相应的值。 DBMS检查参照完整性以确保数据库中数据的“正确性”。 例如,如果在TableA中有一个名为some_id的列,其值为1到10,而在TableB中有一个名为some_id的列,其值为1到11,那么TableA没有与TableB中已有的值相对应的值(11)。     
你可以使外键可以为空,但我不推荐它。可能出现太多问题和不一致。重新设计表,以便您不需要为不存在的值填充外键。通常,您可以通过将列移动到新表来执行此操作。     

要回复问题请先登录注册