我想创建一个重复的表,例如'users'
,向新表'users_history'
添加几列,在新添加的列中,我想设置源表' s列值。
以下是查询:
CREATE TABLE db_portal.users_history LIKE db_portal.users;INSERT db_portal.users_history SELECT * FROM db_portal.users;
ALTER TABLE db_portal.users_history MODIFY COLUMN id int(11) NOT NULL,
DROP PRIMARY KEY, ENGINE = MyISAM, ADD action VARCHAR(8) DEFAULT 'insert' FIRST,
ADD revision INT(6) NOT NULL AUTO_INCREMENT AFTER action,
ADD dt_datetime DATETIME NOT NULL DEFAULT (SELECT join_date FROM db_portal.users) AFTER revision,
ADD PRIMARY KEY (id, revision);
在新添加的列dt_datetime
中,我想从源表中设置join_date
列的值。
但我想这对我不起作用。 很感谢任何形式的帮助。感谢。
答案 0 :(得分:1)
以不同的顺序执行:
CREATE TABLE db_portal.users_history LIKE db_portal.users;
ALTER TABLE db_portal.users_history MODIFY ..........
/* List all columns from "old" table + one new column from "new" table */
INSERT db_portal.users_history( Old_col1, Old_col2, .... Old_colN, dt_datetime )
SELECT t.*,
join_date
FROM db_portal.users t;
通过这种方式,insert语句中的最后一列:dt_datetime
填充了join_date
的值。