如何在MySQL中创建表别名?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (528)

我正在将一个MS Access应用程序(将表链接到一个MSSQL服务器)迁移到MySQL。

作为克服一些MSAccess表命名问题的一种手段,我正在寻求一个解决方案来添加一个MySQL表别名,它将指向MySQL数据库中的现有表。理想情况下,我想在mysql中创建别名'dbo_customers',它也指向mysql中的customers表。

需要明确的是,我希望别名这样的查询中的表名:

SELECT * FROM customers AS dbo_customers

但是,我想能够发出以下查询:

SELECT * FROM dbo_customers

并从客户表中返回数据。

提问于
用户回答回答于

你可以创建一个viwe..

CREATE VIEW dbo_customers AS SELECT * FROM customers;

如果这对你不起作用,你可以试一下创建表的副本,并使用触发器来保持表的同步。

例如:

CREATE TABLE t1( id serial primary key, field varchar(255) not null );
CREATE TABLE dbo_t1( id serial primary key, field varchar(255) not null );

-- INSERT trigger
CREATE TRIGGER t1_dbo_insert AFTER INSERT ON t1
FOR EACH ROW BEGIN
    INSERT INTO dbo_t1 SET field = NEW.field;
    -- No need to specify the ID, it should stay in-sync
END

-- UPDATE trigger
CREATE TRIGGER t1_dbo_update AFTER UPDATE ON t1
FOR EACH ROW BEGIN
    UPDATE dbo_t1 SET field = NEW.field WHERE id = NEW.id;
END

-- DELETE trigger
CREATE TRIGGER t1_dbo_delete AFTER DELETE ON t1
FOR EACH ROW BEGIN
    DELETE FROM dbo_t1 WHERE id = OLD.id;
END
用户回答回答于
CREATE VIEW dbo_customers AS
SELECT * FROM customers

也许不是最好的解决方案,但应该可以执行。

扫码关注云+社区

领取腾讯云代金券