簡體   English   中英

我可以在 MySql 中的臨時表上創建視圖嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM