为视图创建外键
Create foreign key to a view
问题: 我正在尝试在视图的列上创建外键。该视图是来自另一个模式的 SELECT *
,在我使用的列上具有主键约束。
这可能吗?如果是这样,这是否被认为是不好的做法?如果不是,是否有替代方案?好像不能通过phpmyadmin,而且我不能在视图上创建主键。
原因: 我为两个不同的应用程序使用了两个模式,但是有一个 'user' table(不一定是 mysql.user table) 在一个模式中,我想在不授予其他模式权限的情况下在该模式中重用。这就是我使用视图的原因。
没有。不可能。
in the referenced table, there must be an index where the referenced
columns are listed as the first columns ...
视图已具体化。它们本身不是具有最左侧索引的表。视图也是时间快照(创建时间)。它们可能会失去当前模式的支持,直到下次使用时才为人所知。因此,出于多种原因,他们不会像他们所说的那样成为 target
、referenced 的 FK 候选者。
来自手册页FAQ: Views
After a view has been created, it is possible to drop or alter a table
or view to which the definition refers. To check a view definition for
problems of this kind, use the CHECK TABLE statement.
视图是我所说的快照的进一步原因。它的有效性在任何时间点都可能受到严重损害。不是 FK referenced 候选人。
您可以创建另一个(共享)架构并将 table 移至该架构,而不是使用视图。这样一来,您就可以重用 table,而无需授予对受限模式的单一 table 权限。正如@Drew 所说,无法在视图上创建外键约束,因为您无法在视图上创建索引。
问题: 我正在尝试在视图的列上创建外键。该视图是来自另一个模式的 SELECT *
,在我使用的列上具有主键约束。
这可能吗?如果是这样,这是否被认为是不好的做法?如果不是,是否有替代方案?好像不能通过phpmyadmin,而且我不能在视图上创建主键。
原因: 我为两个不同的应用程序使用了两个模式,但是有一个 'user' table(不一定是 mysql.user table) 在一个模式中,我想在不授予其他模式权限的情况下在该模式中重用。这就是我使用视图的原因。
没有。不可能。
in the referenced table, there must be an index where the referenced columns are listed as the first columns ...
视图已具体化。它们本身不是具有最左侧索引的表。视图也是时间快照(创建时间)。它们可能会失去当前模式的支持,直到下次使用时才为人所知。因此,出于多种原因,他们不会像他们所说的那样成为 target
、referenced 的 FK 候选者。
来自手册页FAQ: Views
After a view has been created, it is possible to drop or alter a table or view to which the definition refers. To check a view definition for problems of this kind, use the CHECK TABLE statement.
视图是我所说的快照的进一步原因。它的有效性在任何时间点都可能受到严重损害。不是 FK referenced 候选人。
您可以创建另一个(共享)架构并将 table 移至该架构,而不是使用视图。这样一来,您就可以重用 table,而无需授予对受限模式的单一 table 权限。正如@Drew 所说,无法在视图上创建外键约束,因为您无法在视图上创建索引。