视图是否需要自己的外键约束?

Tro*_*roy 10 mysql foreign-key view

免责声明:我是程序员,不是 DBA,所以请耐心等待...

我有一个视图,用于将 2 个实体映射在一起。我必须在几个不同的表之间进行连接才能得到:

CREATE OR REPLACE VIEW V_SCREENING_GROUP_SITES AS (
SELECT SG.SCREENING_GROUP_ID, V.SITE_ID
FROM SCREENING_GROUP SG, VISIT V, VISIT_DATE VD
WHERE VD.VISIT_ID = V.VISIT_ID 
AND V.SCREENING_GROUP_ID = SG.SCREENING_GROUP_ID);
Run Code Online (Sandbox Code Playgroud)

以上只是上下文,不要太担心。我需要知道的是如何使我的新 V_SCREENING_GROUP_SITES 视图(SCREENING_GROUP_ID 和 SITE_ID)中的字段作为 SCREENING_GROUP 和 SITE 表的外键。或者它甚至重要吗?

如果它是一张桌子,我会这样做:

ALTER TABLE V_SCREENING_GROUP_SITES
ADD CONSTRAINT FK_SCREENING_GROUP_ID
FOREIGN KEY (SCREENING_GROUP_ID)
REFERENCES SCREENING_GROUP.SCREENING_GROUP_ID;
...
Run Code Online (Sandbox Code Playgroud)

但由于这是一个显然行不通的观点。我找不到适用于设置 FK 的 ALTER VIEW 语法。我该怎么办?

(这是一个 MySQL 数据库)

gvi*_*iew 12

视图是基于一个或多个物理表的逻辑表。如果底层表中有外键关系,那么它们会在视图中体现出来。视图完全依赖于它们所源自的表,因此尝试向它们添加外键是不可能的。

  • 太好了,所以我不需要做任何事情(FK 约束已经存在于基础表中)。感谢你的回答。 (2认同)
  • @DTest - 能够对视图应用约束(包括检查、唯一键和外键约束)可能非常有用(尤其是在视图聚合数据的情况下)。碰巧的是,当前没有 RDBMS 强制约束视图,即使它们允许您创建它们。 (2认同)