关系数据库(H2,Java):如何限制外键不匹配同一张表中的另一个外键?

Posted

技术标签:

【中文标题】关系数据库(H2,Java):如何限制外键不匹配同一张表中的另一个外键?【英文标题】:Relational Database (H2, Java): How do I constrain a foreign key to NOT match another foreign key in the same table? 【发布时间】:2010-03-11 08:21:31 【问题描述】:

简单的问题。只是想知道这是否可以在我不必在我的 Java 代码中手动强制执行此约束的情况下完成。这两个外键(在同一个表中)都指向另一个表,但对于每一行,它们不能指向同一个外键。

link text

【问题讨论】:

【参考方案1】:

您可以使用检查约束来强制两列具有不同的值:

ALTER TABLE TableName 
    ADD CONSTRAINT ConstraintName
    CHECK fk1 <> fk2

【讨论】:

以上是关于关系数据库(H2,Java):如何限制外键不匹配同一张表中的另一个外键?的主要内容,如果未能解决你的问题,请参考以下文章

Sqlite外键不匹配sequelize迁移

奇怪的 org.sqlite.SQLiteException: [SQLITE_ERROR] SQL 错误或缺少数据库(外键不匹配 -

外键不匹配 - “password_resets”在 dropColumn 上引用“users”

关系数据库数组(H2、Java)

总结14

在关系数据库中链接未知表的外键