我创建了一个持久表temp
和一个临时表temp
,即它们具有相同的名称。如何将select / update / insert专门用于持久表或临时表?我如何区别他们?
MariaDB Tutorial说:
注意–临时表可以与现有的非临时表具有相同的名称,因为MariaDB会将其视为差异引用。
因此,我认为应该可以引用这些表之一。这个问题与我在SO中提出的question有关,但往后退了一步。
如果临时表与现有的非临时表具有相同的名称,则该临时表将隐藏非临时表的名称。
这意味着在SQL语句中,您将不能引用非临时表。
一种解决方法是,在创建临时表之前在非临时表上创建视图,因为该视图在内部保留对非临时表的引用:
CREATE TABLE t1 (a VARCHAR(100));
INSERT INTO t1 VALUES ("foo");
CREATE VIEW v_t1 AS SELECT a FROM t1;
CREATE TEMPORARY TABLE t1 (b VARCHAR(100));
INSERT INTO t1 VALUES ("bar");
SELECT * FROM v_t1;
SELECT * FROM t1;