2010-05-11 30 views

Trả lời

10

Rất tiếc - bạn không thể tự động tăng trong chế độ xem (Bạn có thể thực hiện việc này trong Thủ tục đã lưu trữ).

Từ MySQL Manual:

Một quan điểm định nghĩa là tùy thuộc vào các hạn chế sau: SELECT tuyên bố không có thể tham khảo hệ thống hoặc biến người dùng.

+0

Cảm ơn bạn đã trả lời! Tôi đoán là do thiếu câu trả lời ... –

2

Hãy thử điều này,

CREATE VIEW view_wp_postmeta AS(
SELECT (
    SELECT count(meta_id) +1 
    FROM wp_postmeta 
    AS vtmp  
    WHERE vtmp.meta_id < pm.meta_id 
) AS vtmp_id, pm. * 
FROM wp_postmeta AS pm 
ORDER BY pm.meta_id DESC 
) 

Trong WordPress meta_id = AUTO_INCREMENT trong TABLE wp_postmeta, tôi tạo ra một VIEW cho điều này, trong đó view_id cư xử như AUTO_INCREMENT để DESC.

Ví dụ, Trong TABLE wp_postmeta -> meta_id [3,5,6,10,2,11] đó sẽ xuất hiện trong XEM view_wp_postmeta -> view_id [6,5,4 , 3,2,1]

2

Tôi biết câu hỏi này là cũ, nhưng chỉ trong trường hợp những người khác đi qua câu hỏi này có một lựa chọn khác.

QUAN TRỌNG: Phương án này có hiệu lực miễn là autoincrement là không thực sự quan trọng, và vì vậy bạn chỉ cần một định danh duy nhất cho các hàng xem:

Bạn có thể sử dụng chức năng UUID() mà cung cấp cho bạn với một số nhận dạng chữ và số duy nhất. Kiểm tra tài liệu tại mysql-reference-manual

Do đó bạn có thể tạo ra một cái nhìn như thế này:

Create view my-view AS 
Select UUID() as 'id', t.name, t.value 
from table t 
.... 
+0

Có một hạn chế lớn với giải pháp này: UUID thay đổi mỗi lần bạn truy cập chế độ xem. – Veve

Các vấn đề liên quan