是否有可能需要一个A列或B列具有一个值,但不是两者都具有的外键。并且A列的外键匹配表1,B列的外键匹配表2?
检查约束可以解决这个问题。如果这是SQL Server,则将执行以下操作:
create table A (Id int not null primary key)
go
create table B (Id int not null primary key)
go
create table C (Id int not null primary key, A_Id int null, B_Id int null)
go
alter table C add constraint FK_C_A
foreign key (A_Id) references A (Id)
go
alter table C add constraint FK_C_B
foreign key (B_Id) references B (Id)
go
alter table C add constraint CK_C_OneIsNotNull
check (A_Id is not null or B_Id is not null)
go
alter table C add constraint CK_C_OneIsNull
check (A_Id is null or B_Id is null)
go
问题内容: 在MySQL中,如何获取指向特定表的所有外键约束的列表?特定的列?这与该Oracle问题相同,但适用于MySQL。 问题答案: 对于表: 对于列: 基本上,我们在where子句中将REFERENCED_TABLE_NAME更改为REFERENCED_COLUMN_NAME。
问题内容: 我有一个表,该表的主键包含两列(product_id,attribute_id)。我有另一个表需要引用该表。如何在另一个表中创建外键,以使用两个主键将其链接到表中的行? 问题答案: 这样的事情应该做到: MySQL要求对外键进行索引,因此引用列上的索引 使用约束语法使您能够命名约束,从而在以后需要时更容易更改和删除。 InnoDB强制使用外键,而MyISAM不强制。(语法已解析但被忽略
问题内容: 我在我的两个实体类User和Permission之间定义了多对多关系。用户具有用户名和countyId的主键组合,而我的Permission表具有正则整数ID。表UserPermission具有三个外键作为其主键:用户名,县名和权限ID。 由于这是一个旧数据库,因此我将没有机会进行Right Thing(™)并在User上创建一个整数主键。 我在User.class中定义了这样的多对多
问题内容: 我们正在尝试重命名MySQL(5.1.31,InnoDB)中的一列,该列是另一个表的外键。 最初,我们尝试使用Django-South,但遇到了一个已知问题: http://south.aeracode.org/ticket/243 OperationalError:(1025,“将’./xxx/#sql- bf_4d’重命名为’./xxx/cave_event’时出错(错误号:150
我试图将一个新表添加到一个已经存在的数据库中,但它总是给我一个错误“外键定义中的未知列'PRODUCT_ID'”。 如有任何帮助,我将不胜感激
问题内容: 有没有一种方法可以使用SQL列出给定表的所有外键?我知道表名/架构,可以插入它。 问题答案: 您可以通过information_schema表来执行此操作。例如: