将行复制到另一个表并在SQL的开头添加一些变量

时间:2013-11-19 10:48:06

标签: sql oracle

我的数据库中有两个表。第一个有一些记录,第二个有历史记录。

当我想修改记录时,我需要将当前记录放在历史表中并添加作者,修改日期和修改注释。

以下是我的表格的定义

记录(record_id,名称,域名等) records_h(hist_id,author,comment,modification_date,record_id,name,domain等...)

我查看了W3C文档并找到了this。这些示例没有显示如何为此方法添加值,我还没有找到如何通过谷歌。

这是我所做的,但它不起作用:

INSERT INTO record_h 
  (hist_id, USER_COMMENT, AUTHOR, MODIFICATION_DATE, record_id, name, domain, etc...) 
SELECT hist_id.nextval, 'test', 'toto', CURRENT_TIMESTAMP, 331898, * 
FROM record 
WHERE record_id=331898;

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

INSERT INTO
      RECORD_H ( HIST_ID,
               USER_COMMENT,
               AUTHOR,
               MODIFICATION_DATE,
               RECORD_ID,
               NAME,
               DOMAIN )
    ( SELECT
           HIST_ID.NEXTVAL,
           'test',
           'toto',
           CURRENT_TIMESTAMP,
           331898
     FROM
           RECORD
     WHERE
           RECORD_ID = 331898 );

请勿在您的选择中使用*,为列命名。应使用()

括起选择