标签: foreign-keys

SQL - 两个相互依赖的外键

目前的结构如下:

Table RowType:    RowTypeID

Table RowSubType: RowSubTypeID
                  FK_RowTypeID

Table ColumnDef:  FK_RowTypeID
                  FK_RowSubTypeID (nullable)
Run Code Online (Sandbox Code Playgroud)

简而言之,我将列定义映射到行。在某些情况下,这些行具有子类型,子类型将具有特定于它们的列定义。或者,我可以将那些特定于子类型的列定义挂出它们自己的表,或者我可以将 RowType 和 RowSubType 中的数据组合到一个表中并使用单个 ID,但我不确定这是否是更好的解决方案(如果有的话,我倾向于后者,因为我们最终大多会为给定的 RowType/RowSubType 拉取 ColumnDefs。

现在的设计是对SQL的亵渎吗?

如果保留当前结构,如果在 ColumnDef 中指定了 RowSubTypeID,如何保持它必须与 RowTypeID 指定的 RowType 相对应?我应该尝试用触发器强制执行此操作,还是我错过了可以解决问题的简单重新设计?

sql sql-server foreign-keys foreign-key-relationship sql-server-2008

2
推荐指数
1
解决办法
839
查看次数

导出和导入外键

我们已将站点转移到新服务器,现在它已经运行了三天,没有任何外键处于活动状态。

我怎么能够:

  1. 从旧结构中导出外键(100+表)
  2. 导入密钥,同时忽略完整性问题
  3. 丢弃所有缺少外键的记录

mysql innodb foreign-keys

2
推荐指数
1
解决办法
4428
查看次数

如何检查外键是否设置为不存在的主键?

有时我在使用 BD At Work 时遇到问题。通常是当我尝试在会话关闭的情况下恢复或更新 Java 中的表时(著名的 LazyInitializatioException )。最后,有时问题是存在指向不存在的主键索引的值的外键。当发生这种情况时,惰性实体无法正确加载。

那么,有没有办法检查表数据是否将外键索引设置为不存在的主键?

对于单个列来说很容易。但我的意思是对于具有大约 10 或 20 个外键的表。

我正在使用 postgres。如果这是一个专门针对它的答案,那就更好了。=]

抱歉我的英语不好(不是母语)。

sql postgresql foreign-keys primary-key

2
推荐指数
1
解决办法
3466
查看次数

sql 一个表的两列引用另一表中的同一列

我有这2张桌子

tbl_link

    pID | fID_a | fID_b | link_desc
     1  |  1    |  2    |  aa + bb

tbl_structure

    pID | desc
     1  |  a
     2  |  b
Run Code Online (Sandbox Code Playgroud)

fID_a 和 fID_b 是 tbl_struct 中 pID 的外键 fID_a 不允许 NULL 值,而 fID_b 允许

我试图在查询结构 1 时检索结构 2 的 desc

我现在的 sql 查询看起来像这样

SELECT a.link_desc, tbl_structure.desc FROM tbl_strukture 
LEFT JOIN tbl_link as a ON tbl_structure.pID = a.fID_a 
LEFT JOIN tbl_link as b ON tbl_structure.pID = b.fID_b 
WHERE tbl_structure.pID = 1
Run Code Online (Sandbox Code Playgroud)

但我只得到了 PID …

sql foreign-keys left-join

2
推荐指数
1
解决办法
8327
查看次数

mysql约束int(10)引用int(11)

我有一个带有外键约束的数据库,其中 int(10) 引用 int(11)。我还有 int(11) 参考 int(10)。

他们没有任何错误。这会在未来造成问题吗?(除了整数空间不足的问题)

当尝试更改 varchar 的列大小时,我遇到了一种相关问题:

mysql 5.6 外键约束错误;5.5中没有出现

mysql foreign-keys

2
推荐指数
1
解决办法
813
查看次数

是否可以在没有外键的情况下使用 Hibernate

一个简单的问题,如果有人可能有此主题的经验:

是否可以在表中使用没有外键的 Hibernate(具有完整功能)...?

就我而言,我需要这个,因为我想要reverse engineering a liferay database和实体,而在liferay中,外键只会搞乱事情(Liferay不支持外键),所以如果我可以关闭外键更改,这将是一个很好的解决方案在某些休眠参数中(我知道它不起作用,所以可能需要一些解决方法)

hibernate foreign-keys liferay

2
推荐指数
1
解决办法
4028
查看次数

带有外键列表的 SQLite 字段

我正在构建一个 SQLite 数据库来保存我的房地产经纪人的列表。我已经能够使用外键来识别每个代理的列表,但我想在每个代理的记录中创建一个列表;从代理商和列表之间的一对一关系转变为一对多关系。

看这里: http: //www.sqlite.org/draft/foreignkeys.html,没有提到“外键列表”字段。我正在尝试的可行吗?

我认为,作为一种解决方法,我可能会制作一个包含关系本身的表,但这似乎不是一个非常干净的解决方案。我查看了这个线程:SQLite 外键示例,但我不确定我的元素是否与他们在那里描述的多对多关系相似。

我也愿意接受有关如何做得更好的建议。我是否应该在实际列表中包含列表代理的名称,然后从那里进行查询?

CREATE TABLE listings
(
    listing_id        INTEGER PRIMARY KEY AUTOINCREMENT,
    listing_address   TEXT UNIQUE NOT NULL,
    acq_date          DATE
 )

CREATE TABLE agent
(
     agent_id         INTEGER PRIMARY KEY AUTOINCREMENT,
     agent_name       TEXT NOT NULL,
     agent_listings   INTEGER,
     FOREIGN KEY (agent_listings) REFERENCES listings (listing_id) NOT NULL
 )
Run Code Online (Sandbox Code Playgroud)

sql sqlite foreign-keys foreign-key-relationship one-to-many

2
推荐指数
1
解决办法
3497
查看次数

无法向现有表添加外键

我无法将外键添加到我的现有表中。publisher_id我想将表games引用中的外键添加到publishers( publisher_id)。

但是当运行下面的sql时,它说:

源列和目标列必须具有相同的数据类型,目标列上必须有索引,并且引用的数据必须存在。无法添加或更新子行:外键约束失败 ( vngarena.com. #sql-818_1b1, CONSTRAINT #sql-818_1b1_ibfk_2FOREIGN KEY ( publisher_id) REFERENCES publishers( publisher_id) ON DELETE CASCADE ON UPDATE CASCADE

sql 是:

更改表games
添加外键 ( publisher_id) 引用publishers( publisher_id) 删除级联更新级联;

这是我的数据库的图表:

在此输入图像描述

更多信息:
- 表games有两条记录
- 表games有其他外键引用表gamecats( gamecat_id)
- 表gamecats有两条记录
- 表publishers没有记录

mysql sql foreign-keys

2
推荐指数
1
解决办法
4472
查看次数

删除外键约束

如果我在创建过程中没有命名外键,如何删除它

create table abc(
id number(10),
foreign key (id) references tab(roll)
);
Run Code Online (Sandbox Code Playgroud)

甚至

 alter table abc drop foreign key mn_ibfk_1;
Run Code Online (Sandbox Code Playgroud)

不适合我。我使用的是Oracle 10g。

sql oracle constraints foreign-keys

2
推荐指数
1
解决办法
2万
查看次数

添加外键但出现约束冲突错误

我有四张桌子:

1)Country:Two columns
  a) country_id
  b) country_name

2)State: Three columns
  a) state_id
  b) state_name
  c) country_id(foreign key)

 3)City: Three Columns
   a) city_id
   b) city_name
   c) state_id(foreign key)

 4) Doctor: 20 Columns
   a) doc_id (primary key)
   b) doc_name
   c) email,gender age and so on 
Run Code Online (Sandbox Code Playgroud)

我已经用 dara 填充了这些表。

我在 doctor 表中添加三个新列:country_id、state_id 和 city_id 作为外键。

当我将 Country_id、state_id 和 city_id 作为外键插入到该表中时,出现此错误

1452 - Cannot add or update a child row: a foreign key constraint fails (`medical_network`.`#sql-4174_45`, CONSTRAINT `#sql-4174_45_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `country` (`country_id`) …
Run Code Online (Sandbox Code Playgroud)

mysql constraints foreign-keys

2
推荐指数
1
解决办法
1648
查看次数