代码之家  ›  专栏  ›  技术社区  ›  Chad

SQL-删除了外键-可能吗?

  •  1
  • Chad  · 技术社区  · 14 年前

    我只是好奇这是否可行,特别是在支持.NET实体框架的SQL CE(Express)中:

    Table1 (primary)
    -nvarchar(2000) url
    -...
    
    Table2 (with foreign key)
    -nvarchar(2000) domain
    -...
    

    table2.domain上的外键引用table1.url,使table.url包含table2.domain

    例如

    Table1:
    http://www.google.com/blah/blah
    http://www.cnn.com/blah/
    http://www.google.com/foo
    
    Table2:
    google.com
    cnn.com
    

    是否可以由SQL CE(更不用说任何关系数据库)编写和实施此脚本,如果可以,如果我将数据库导入到模型中,.NET的实体框架是否可以自动支持此脚本?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Bill Karwin    14 年前

    否,整个外键值必须与引用表中的整个主键值匹配。

    我在想一些有帮助的建议。

    • 您可以使用触发器或检查约束来验证表2中的字符串,但这需要编写易于出错的细致表达式。

    • 您可以将域冗余存储在表1中,将 UNIQUE 约束它,并在表2中声明您的外键以指向table1.domain。外键约束可以引用唯一约束中的列,也可以引用主键约束中的列。