2015-06-10 145 views
2

我想从其他表的列中添加一个具有默认值的新列。MySQL:将新列插入到其他表的默认值表中

1st Table 'sensors' 
------------------------------------------------------------- 
id sensorId  location city country  userId  
------------------------------------------------------------- 

2nd Table sensordata 
------------------------------- 
id sensorId  dataValues 
------------------------------- 

我想在sensordata表中添加一个列,其中sensorId相同的位置的默认值。

我该怎么做?

像这样的事情

ALTER TABLE `sensordata` s ADD `location` VARCHAR(200) NOT NULL DEFAULT 
    (SELECT location from sensors s WHERE s.sensorId = d.sensorId) AFTER `dataValues` 

请不要告诉我为什么我需要有重复的数据,还有一个原因:)

回答

2

你需要做的是在两个步骤中

第一步

ALTER TABLE `sensordata` ADD `location` VARCHAR(200) ; 

第二步

update sensordata sd 
join sensors s on s.sensorId = sd.sensorId 
set sd.location = s.location 

更新时间: 这是我做了什么,它工作正常

ALTER TABLE `sensordata` ADD `location` VARCHAR(200) NULL DEFAULT NULL AFTER `dataValues`; 

UPDATE sensordata d SET d.location = (SELECT s.location from sensors s WHERE s.sensorID = d.sensorID); 
+0

我想你的答案并不完整 - 更新现有的行可能是必要的,但绝对不足以模拟DEFAULT关键字。 – a1ex07

1

MySQL则需要默认值是恒定在几乎所有情况下 - https://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html。 尽管在某种程度上模仿DEFAULT功能,但您可以编写before insert触发器。当然,触发器只会影响新的行,并且您需要手动更新现有的行。

+0

感谢您的解释,它是有道理的。干杯 –

相关问题