[英]Can I create a view on a temporary tables in MySql?
是否可以在 MySql 中的臨時表上創建視圖?
@O Jones,您正在搜索的是“變量表”
MySql :
CREATE TEMPORARY TABLE TempTableName (
column_1 DATATYPE ARGUMENTS,
column_2 DATATYPE ARGUMENTS,
column_N DATATYPE ARGUMENTS
);
這是有關如何使用它的示例
CREATE TEMPORARY TABLE WeekDays(
WeekNumber INT NOT NULL,
ShortWeekDayName VARCHAR(40) NOT NULL,
WeekDayName VARCHAR(40) NOT NULL
);
INSERT INTO WeekDays
VALUES
(1,'Mon','Monday') ,
(2,'Tue','Tuesday') ,
(3,'Wed','Wednesday') ,
(4,'Thu','Thursday'),
(5,'Fri','Friday'),
(6,'Sat','Saturday'),
(7,'Sun','Sunday');
SELECT * FROM WeekDays;
微軟SQL :
DECLARE @table_variable_name TABLE (
column_1 DATATYPE ARGUMENTS,
column_2 DATATYPE ARGUMENTS,
column_N DATATYPE ARGUMENTS
);
這是有關如何使用它的示例
DECLARE @WeekDays
TABLE(
WeekNumber INT NOT NULL,
ShortWeekDayName VARCHAR(40) NOT NULL,
WeekDayName VARCHAR(40) NOT NULL
);
INSERT INTO @WeekDays
VALUES
(1,'Mon','Monday') ,
(2,'Tue','Tuesday') ,
(3,'Wed','Wednesday') ,
(4,'Thu','Thursday'),
(5,'Fri','Friday'),
(6,'Sat','Saturday'),
(7,'Sun','Sunday');
SELECT * FROM @WeekDays;
https://dev.mysql.com/doc/refman/8.0/en/create-view.html說:
該定義不能引用 TEMPORARY 表,並且您不能創建 TEMPORARY 視圖。
通過快速測試確認:
mysql> create temporary table foo ( i int );
Query OK, 0 rows affected (0.00 sec)
mysql> create view v as select * from foo;
ERROR 1352 (HY000): View's SELECT refers to a temporary table 'foo'
如果您考慮一下,這是有道理的。 視圖應該可供其他會話使用。 但是臨時表僅限於創建它的當前 session。 因此,如果您創建一個僅引用表的視圖,您可以在 session 中查詢,它與其他會話無關,只能返回錯誤。
這就是為什么文檔中的聲明還提到您不能創建“臨時視圖”。 他們預計您可能想要一個也適用於您的 session 的視圖,該視圖可以查看適用於您的 session 的表。 但 MySQL 不支持此類功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.