2017-10-11 118 views
1

我一直在这里工作了一段时间,我一直没有能够想出一个解决方案,所以我不知道这是否甚至可能是可能的,但任何帮助,不胜感激。当从另一个表复制时更新行的时间戳

我有一个非常基本的结构的两个表如下:

CREATE TABLE测试(时间时间戳NULL DEFAULT NULL);

CREATE TABLE test_copy_to(time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP);

我然后创建在具有NULL值即,没有给定时间 “测试” 表中的条目:

INSERT INTO测试值(NULL);

然后我想NULL值从 “测试” 表复制到 “test_copy_to” 表如下:

INSERT INTO test_copy_to SELECT * FROM测试;

第一个问题是“test_copy_to”不会接受第一个表中初始化的NULL值。然而,我想实现的是能够将“test”中的值(具有空值)复制到“test_copy_to”,以便将时间戳更新为从一个表复制到其他。我试过在可变时间上使用UPDATE,但似乎没有工作。无论如何,我可以创建这样的表,使其表现得如此?

回答

2

而是使用COALESCE()函数像下面提供一些默认值,其中所述值是null

INSERT INTO test_copy_to 
SELECT coalesce(`time`, CURRENT_TIMESTAMP) FROM test;