【问题标题】:MariaDB: How can I select a temporary table if there is a persistent table with the same name?MariaDB:如果有同名的持久表,如何选择临时表?
【发布时间】:2020-02-04 12:15:38
【问题描述】:

我创建了一个持久表temp和一个临时表temp,即两者同名。如何专门对持久表或临时表使用 select/update/insert?我如何区分它们?

MariaDB Tutorial 说:

注意 - 临时表允许与现有的非临时表同名,因为 MariaDB 将其视为差异参考。

所以,我想应该可以参考这些表格之一。这个问题与我在 SO 中提出的 question 有关,但退一步。

【问题讨论】:

    标签: mariadb temp-tables


    【解决方案1】:

    如果临时表与现有的非临时表同名,则临时表将隐藏非临时表的名称。

    这意味着在 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;
    

    【讨论】:

    • 就是这样。只要临时表存在,所有selectsupdatesinserts甚至drop table都会在临时表上执行。
    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多