如何在VIEW中使用主键(不依赖于源表的键)

时间:2009-12-28 22:09:00

标签: mysql primary-key

我正在用3个表格创建一个VIEW。每个TABLE都有它的主键。但是,在VIEW中为了拥有主键,我将不得不使用复合主键(3个TABLES的主键组合)。

但是,我想在VIEW中添加一个列作为主键,仅为了VIEW的目的而创建。作为VIEW定义的一部分,它应该是UNIQUE(自动增量,因为它主要是INT)。我怎样才能做到这一点?

我正在使用MySQL 5.1

4 个答案:

答案 0 :(得分:11)

使用

投票最高的答案
SELECT @rownum:=@rownum+1 as id, mytable.*
FROM (SELECT @rownum:=0) r, mytable;

不正确 - 您无法在使用FROM中的子选择的mysql中创建视图。您唯一的选择是将一组列视为复合键。

答案 1 :(得分:3)

视图没有主键或索引 - mysql引擎将使用基表上定义的索引和键。

答案 2 :(得分:0)

您可以使用各种方法向视图数据插入唯一ID,例如:

SELECT @rownum:=@rownum+1 as id, mytable.*
FROM (SELECT @rownum:=0) r, mytable;

然而,这是主键,它不是一致的,并且会在数据发生变化时发生变化。

你到底需要什么钥匙?

答案 3 :(得分:0)

视图只是一个存储的子查询。 PK的想法无关紧要。

...除非您需要索引视图,在这种情况下,您需要视图上的聚集索引(但仍不一定是主键)

(虽然,我说的是SQL Server ......我不确定这是如何转换为MySQL的)