我正在用3个表格创建一个VIEW。每个TABLE都有它的主键。但是,在VIEW中为了拥有主键,我将不得不使用复合主键(3个TABLES的主键组合)。
但是,我想在VIEW中添加一个列作为主键,仅为了VIEW的目的而创建。作为VIEW定义的一部分,它应该是UNIQUE(自动增量,因为它主要是INT)。我怎样才能做到这一点?
我正在使用MySQL 5.1
答案 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的)