Sql server 2005 sqlServer中的约束问题/解决方案
对不起,我的问题很肤浅Sql server 2005 sqlServer中的约束问题/解决方案,sql-server-2005,foreign-keys,constraints,Sql Server 2005,Foreign Keys,Constraints,对不起,我的问题很肤浅 假设我的数据库中有4个表(SQLServer2005) 图片,新闻,产品和画廊表格。在我的图片表中,我有3个外键指向所有其他3个表,所有外键都可以为空,默认值=-1。所有表都有主键,并且都是标识 在我的网络表单中,我插入的每张照片都与一张、两张或三张其他表格相关。 示例:它可能与NewsId=4、galleryId=2相关,而与产品表无关。所以ProductId=-1。 我不知道如何插入照片而不给出此错误。insert语句与外键约束“FK_Picture_Product
假设我的数据库中有4个表(SQLServer2005)
图片,新闻,产品和画廊表格。在我的图片表中,我有3个外键指向所有其他3个表,所有外键都可以为空,默认值=-1。所有表都有主键,并且都是标识
在我的网络表单中,我插入的每张照片都与一张、两张或三张其他表格相关。
示例:它可能与NewsId=4、galleryId=2相关,而与产品表无关。所以ProductId=-1。
我不知道如何插入照片而不给出此错误。insert语句与外键约束“FK_Picture_Product”冲突。
。 我知道这是为什么,这是因为信息外键约束。但我不知道如何设计我的数据库来克服这个问题。我希望我能遇到它
p.s:此外,将来我想根据新闻、产品或画廊或它们的混合查询我的图片表。这是因为您没有ID为-1的任何产品,您必须将默认值设置为NULL,并插入NULL值,而不是-1
创建外键时,sql server会检查插入的外键是否存在于引用的表中,如果不存在,则RDMS会拒绝插入该行。为什么对未定义的表使用
-1
?这就是空值的作用!删除默认值,并在没有FK行时允许这些行为NULL。为什么外键的默认值为-1?当您插入一个新行而该新行没有填充其中一个外键时,外键将被设置为-1,这与外键表中某一行的键不匹配
我通常没有外键的默认值,如果外键表中没有指向行的链接,则外键为null。这是合法的,因为您已将所有外键定义为可为null谢谢大家,我犯了错误谢谢,我如何将null分配给外键,例如在我的图片对象中,我有:private int\u productId;如果我不赋值,它会自动得到0值。你可以将它设置为null:private int_如果您使用的是c语言,则使用productID#