这可能吗?对于某些上下文,我正在使用临时表,并希望改变值。我只是想知道是否可以将一个表的列中的值插入到新表的列中,同时从第一个表中删除原始值(如果这是有意义的话)。
表1
|id| |Column_with_value| --------------------------------- 1 | blah | ---------------------------------
表2
(empty)
表1
(empty)
表2
|id| |Column_with_value| --------------------------------- 1 | blah | ---------------------------------
答案 0 :(得分:1)
您可以在表1上使用触发器来侦听删除语句。
这样的事情:
CREATE TRIGGER `my_insert_table2_trigger`
AFTER DELETE ON `table1`
FOR EACH ROW
BEGIN
INSERT INTO `table2` VALUES (OLD.id, OLD.Column_with_value)
END
使用OLD,您可以访问已删除行的值。
答案 1 :(得分:0)
试试这个
CREATE TRIGGER Remove_Old
BEFORE DELETE ON Table_1
FOR EACH ROW
Insert Into Table_2
SELECt * From Table_1
答案 2 :(得分:0)
在表之间移动数据成本,使架构复杂化并增加维护。如果您有一个包含所有数据的表格,可能会更好,还有一个额外的列可以相应地标记它。
然而
INSERT INTO tbl_1 (id, column)
SELECT id, column from tbl_2 where id=1;
DELETE FROM tbl1 where id=1;
或者,如果您只想将所有内容从完整表移动到空表,请尝试
RENAME TABLE tbl_1 TO tbl_2
答案 3 :(得分:0)
我不知道可以做到这一点的单一操作。但只要它保留在一个事务中,就没有必要将它放在一个操作中:
BEGIN;
SELECT * FROM table1 …;
UPDATE table2 …;
DELETE FROM table1 …;
COMMIT;