Mar*_*arc 1 sql foreign-keys sql-server-2008
我有一个与外键有关的问题.我正在使用SQL Server 2008.
有两个表,Customer和Invoice,它们看起来像这样:
客户表:
CustomerID
名称
地址
发票表:
InvoiceID
日期
CustomerID
Customer表中的CustomerID列是主键,Invoice表中的CustomerID列具有外键.
我想删除Customer表中的一行,但不删除Invoice表中的已连接行.有没有办法做到这一点?
编辑:
我忘了提到已删除的客户存储在日志表中,因此ID仍然存在,但在另一个表中
"我想删除Customer表中的一行,但不删除Invoice表中的连接行."
外键的整个和整个点是为了防止你这样做.
约束强制执行规则,该规则声明发票必须属于客户.那么,如果发票不属于客户,那么在您的申请中意味着什么?它应该属于什么?
或者以商业术语来说,如果发票没有付费的客户?
对于copurse,我的咆哮假定这Invoice.CustomnerID是一个强制性的专栏.也许您的数据模型允许它是可选的.在这种情况下,将teh列设置为NULL,然后您可以删除Customer记录.鉴于潜在的业务规则 - 必须支付发票(或公司破产)我认为这将是一个有缺陷的数据模型,但嘿!