gpt4 book ai didi

sql - 添加与固定列值的关系

转载 作者:搜寻专家 更新时间:2023-10-30 23:34:11 28 4
gpt4 key购买 nike

我喜欢在 3 个表之间创建一个“条件”(外键)关系。在我的例子中,它是这样的(当然它更复杂,但我已经将它剥离以演示问题情况):

Table [ItemTable]
Column int Id (PK)
Column str ItemName

Table [ItemGroup]
Column int Id (PK)
Column str GroupName

Table [Settings]
Column int Id (PK)
Column str RefersTo ('I' means item, 'G' means item group)
Column int Reference (foreign key depending on 'RefersTo')

现在的目标是创建具有如下约束的关系:

Settings.Reference refers to ItemTable.Id when Settings.RefersTo equals 'I'
Settings.Reference refers to ItemGroup.Id when Settings.RefersTo equals 'G'
No relation in case if RefersTo is empty (so no constraint in this situation)

这听起来像是引用这里或那里的关系,但我不知道如何使用 MS SQL 实现。我通常使用 Management Studio 中的图形设计器来创建和修改表定义。

感谢任何帮助。提前谢谢你。

最佳答案

外键在其定义中没有过滤子句。但是您可以使用计算列来做到这一点:

create table Settings as (
. . .
reference_i as (case when refersto = 'I' then reference end) persisted,
reference_g as (case when refersto = 'G' then reference end) persisted,
constraint fk_settings_reference_index
foreign key (reference_i) references itemTable(id),
constraint fk_settings_reference_group
foreign key (reference_g) references groupTable(id)
);

关于sql - 添加与固定列值的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45234224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com