当将值插入TARGET_TABLE
下面INSERT..SELECT
语句,列默认为列lastupdate
似乎优先于从SELECT
语句产生的值优先于插入值。列默认在INSERT..SELECT语句
即使在SOURCE_TABLE
中此列总是有值。
实施例:
SOURCE_TABLE
包含lastupdate = 16.08.12 15:41:44
执行该语句之后,在TARGET_TABLE
lastupdate
获取设置为SYSDATE
,例如16.08.12 15:49:14
:
INSERT INTO TARGET_TABLE (A, B, C, D, LASTUPDATE, F)
SELECT A, B, C, D, LASTUPDATE, F
FROM SOURCE_TABLE
WHERE B = 'some_value';
CREATE TABLE TARGET_TABLE
(
ID NUMBER NOT NULL,
A VARCHAR2(255 CHAR) NOT NULL,
B VARCHAR2(255 CHAR) NOT NULL,
C CLOB NOT NULL,
D VARCHAR2(255 CHAR),
LASTUPDATE DATE DEFAULT SYSDATE,
E DATE DEFAULT SYSDATE
)
Oracle版本:Oracle数据库11g企业版发布11.2.0.2.0 - 64位生产
我想从SOURCE_TABLE
复制到TARGET_TABLE
的价值,而不是设置为SYSDATE
。
我在这里错过了什么?谢谢。
对于关于触发器的提示,你是绝对正确的。我确信它只会生成ID(就像你写的是正确的),但是这个东西也会更新lastupdate列。和关于E/F的不匹配有关。由于数据库缺少权限,我无法首先看到触发器定义。多谢。 – 2012-08-16 15:17:24