在Navicat for MySQL中打開視圖時,提示視圖沒有主鍵的問題


一直把視圖理解為一個select語句而已,視圖一般就是用於查詢,不會通過視圖來更新表或視圖本身的數據,所以視圖根本不需要什么主鍵。今天自己建了一個視圖view_test:

drop view if exists view_test
create view view_test
as
select a.c1,a.c2,
b.c1,b.c2,
c.c1,c.c2,
d.c1,d.c2
from table_A a
join teble_B b on a.c3=b.c3
join table_C c on b.c4=c.c4
join table_D d on c.c5=d.c5
where d.c6 in (
select c6 from table_E  where c5=(select c5 from table_D where c7='123321')
)
order by a.c1

在Navicat of MySQL中打開這個視圖的時候,彈出如下的提示(網上的圖,圖中第一行的v_sys_user就是自己創建的視圖名稱),說這個視圖沒有主鍵,但是能正常查詢出視圖的結果。

后來在 http://blog.csdn.net/wufengui1315/article/details/11620393

這里查到,說用了join或者where子查詢里如果用了From子句中的表的話就會報這個提示,於是我把where子句去掉,改成:

drop view if exists view_test
create view view_test
as
select a.c1,a.c2,
b.c1,b.c2,
c.c1,c.c2,
d.c1,d.c2
from table_A a
join teble_B b on a.c3=b.c3
join table_C c on b.c4=c.c4
join table_D d on c.c5=d.c5
order by a.c1

結果還是報相同的提示框,后來不小心忽略了 "order by a.c1" 這一行執行上述語句,打開的時候,就沒這個提示了,再把where子句加回來,但把order by語句去掉,打開也不會報錯,說明問題出在order by子句,而不是什么where 或者join.只要去掉order by語句就好了

另外,報錯的視圖語句(包含order by語句),在Navicat for MySQL中打開會報提示,但用MySQL Workbench打開就不會,說明這並不是什么大問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM