MySql表类型,如何自动将列数据从一个表格绘制到另一个表格?

问题描述:

我有一个名为'members'和'users'的2表,它们都有2列:名称&性别。我想是我每次添加一个新的名字“成员表中,排在“性别”列中的值会从“用户”表进行更新:MySql表类型,如何自动将列数据从一个表格绘制到另一个表格?

**users:** 
Emilia - F 
John - M 
David - M 
**members:** 
Synthia - F 

'INSERT INTO members VALUES('David')...or whatever' 
now **members:** 
Synthia - F 
David - M 
+1

在两个不同的表物理存储相同的数据(性别栏)违背关系数据库的正常化原则,并可能导致数据损坏(假设在某一时刻在用户的值被存储在所述副本改性在成员不是,这可能会比你的用户发生性变化更容易混淆^ _ ^) – Rory 2009-11-28 15:01:58

你可以使用一个insert trigger。但是,您不应该在两个不同的表中拥有性别副本 - 它会打破标准化,需要更多存储空间并且存在两个副本不同步的风险。

相反,您应该使用外键并在需要来自两者的信息时加入表格。您可以使用用户名作为外键,或者使用自动增量ID(如果有)。

我想你说的是计算列,但我不确定MySQL是否支持它们(谷歌有点,我可能是错的)。为什么不创建一个两个表的视图呢?你可以尝试类似...

CREATE VIEW MemberDetail 
AS 
    SELECT mem.Name, 
    usr.Gender 
    FROM Members mem 
    INNER JOIN Users usr ON mem.Name = usr.Name; 
+0

MySQL自5.0以来支持视图(但没有物化视图) – 2009-11-28 17:22:33

INSERT ... SELECT语法怎么样?

INSERT into members (name, gender) 
SELECT u.name, u.gender FROM users u WHERE u.name='Cynthia';