我有两个结构相同的表,A 和 B。编写了某个应用程序,以便它始终将相同的数据写入两个表。
在与同事讨论节省驱动器空间的潜力后,我想知道 mysql 或 postgresql 是否能够在表上创建另一个表的“别名”或“符号链接”。
我希望行为与软文件符号链接的行为非常相似;从符号链接本身或其目标读取将产生相同的输出,写入任一将更新目标。
据我所知,一个新的 Postgresql 可以让你INSTEAD OF在视图上有触发器。因此,拥有一张表、一个视图 asSELECT * FROM table1和INSTEAD OF触发器insert, update, delete应该适合您。虽然这种方法在 Mysql 中不起作用
在 MySQL 中(仅使用 MyISAM 存储引擎)可以使用符号链接从头开始创建表。在 Linux 和 Windows 中这是可能的(使用硬链接):
这是我过去关于这个主题的帖子
但是,您所建议的操作必须在 Linux 中的 MySQL 之外完成。
对于这个例子
步骤01) 创建表1
CREATE TABLE mydb.table1
(
id int not null auto_increment,
mydata varchar(255) not null,
primary key (id)
) ENGINE=MyISAM;
Run Code Online (Sandbox Code Playgroud)
步骤 02) 创建三个符号链接来模仿 TableB
cd /var/lib/mysql/mydb
ln -s table1.frm table2.frm
ln -s table1.MYD table2.MYD
ln -s table1.MYI table2.MYI
Run Code Online (Sandbox Code Playgroud)
步骤 03) 尝试插入表 1 并从表 2 中读取。然后尝试相反的做法。
INSERT INTO table1 (mydata) VALUES ('rolando'),('edwards');
SELECT * FROM table2;
INSERT INTO table2 (mydata) VALUES ('abraham'),('lincoln');
SELECT * FROM table1;
Run Code Online (Sandbox Code Playgroud)
如果一切正常,那么您就可以这样做。
警告
| 归档时间: |
|
| 查看次数: |
8075 次 |
| 最近记录: |