2013-02-22 21 views
4

我不确定什么是构建我的问题的最佳方式。SQL Server:将外键设置为特定值

我有一个表中有外键列。默认情况下,外键被设置为NOT NULL,我现在想保持这种状态,因为这可能是最终结果。但是现在可能有不需要(也有)外键值的记录,我想以某种方式区分它们,以便尽可能清楚这些记录与另一个不同。

我试过了,但看起来我不能使用bigint的负数,这是我的SQL Server表中外键的值。我想这是非常标准的东西,除了将外键设置为NULL外,在这种情况下做什么是最好的?

+0

允许'NULL's或添加一行到相关的表说:“待定”,并使用它的关键。 – HABO 2013-02-22 15:35:00

+0

我不想重新设计,因为我非常确定最终会需要外键。我可以设置一些默认值,比如'6000',这在编程时不会达到,但是在我看来似乎有些不知道,我怀疑有更好的方法来解决这个问题。 – Leron 2013-02-22 15:38:02

+0

因此,对列(“NOT NULL”和外键)有两个约束,并且您在问如何插入一个不符合这些约束的值? – 2013-02-22 15:41:58

回答

3

不知道为什么HABO没有做出答案,因为这几乎是你唯一的选择。

  1. 让它空
  2. 在引用表中创建一个行并将其设置为TBD或任何名字你喜欢并从代替空

使用ID如果您有做记录不需要FK,永远不会,那么你应该设置列为NULL,否则使用临时值。

您不能使用负值,因为如果您有外键约束,必须在外表中引用某些内容。

+0

要画出语法隐喻Mike的暗示:外键NULL - >“可能有”。外键NOT NULL - >“必须有。” – 2013-02-22 16:27:23

1

外键限制强制您引用另一个表的现有PK。但没有提及

一种方法是删除约束现在:

ALTER TABLE YourTable 
    DROP CONSTRAINT fk_something