rsw*_*lff 26 mysql sql sql-server ms-access
我正在将MS Access应用程序(将表链接到MSSQL服务器)迁移到MySQL.
作为克服一些MSAccess表命名问题的一种方法,我正在寻找一种解决方案来添加MySQL表别名,该别名将指向MySQL数据库中的现有表.理想情况下,我想在mysql中创建别名'dbo_customers',它也指向mysql中的customers表.
需要明确的是,我不希望别名这样的查询中的表名:
SELECT * FROM customers AS dbo_customers
Run Code Online (Sandbox Code Playgroud)
但我希望能够发出以下查询:
SELECT * FROM dbo_customers
Run Code Online (Sandbox Code Playgroud)
并让它从customers表返回数据.
Dre*_*ewM 38
在我的头顶
CREATE VIEW dbo_customers AS
SELECT * FROM customers
Run Code Online (Sandbox Code Playgroud)
也许不是最好的解决方案,但应该可以工作,因为视图是可更新的.肯定适用于只读
您可以创建一个视图.
CREATE VIEW dbo_customers AS SELECT * FROM customers;
Run Code Online (Sandbox Code Playgroud)
如果这对您不起作用,您可以尝试创建表的阴影副本,并使用触发器来保持表同步.
例如:
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
Run Code Online (Sandbox Code Playgroud)
不完全是'别名',远非完美.但如果一切都失败了,这是一个选择.
归档时间: |
|
查看次数: |
61795 次 |
最近记录: |