2010-12-15 125 views
1


我必须使用其他表中的字段创建表(H2嵌入数据库)。我决定使用CREATE TABLE AS声明。CREATE TABLE AS - 如何用PK添加列?

我的代码:
CREATE TABLE DOC AS
SELECT I.ID, I.STATUS, A.REMINDERINFORMATION
FROM IE802 I JOIN IE802_ATTRIBUTES A ON A.IE802_ID=I.ID;

其从代码产生的每个行的上方另外必须具有DOCID的PrimaryKey。我如何添加此列并使其自动增量和PK同时进行?

感谢您的任何提示和其他解决方案!

或者,我该如何让现有的I.ID成为PK?

我仍然收到一个错误:列“ID”不能为空; SQL语句: ALTER TABLE DOC ADD PRIMARY KEY(ID)[90023-147]

+0

'ALTER TABLE DOC ALTER COLUMN ID BIGINT NOT NULL' 解决了我错误。 – monczek 2010-12-15 12:54:42

+0

如果您回答了您自己的问题,请发布答案并将其标记为已接受。但是,我没有看到您的评论中的声明如何回答您的问题的这一部分:“我如何添加此列并同时使其自动增量和PK?” – Tony 2010-12-15 12:58:34

+0

上面的这一行代码只能排除错误:列“ID”不能为空; – monczek 2010-12-15 13:37:37

回答

1

H2支持列定义在CREATE AS SELECT:

CREATE TABLE DOC(
    ID INT PRIMARY KEY, 
    STATUS INT, 
    REMINDERINFORMATION VARCHAR(255) 
) 
AS SELECT I.ID, I.STATUS, A.REMINDERINFORMATION 
FROM IE802 I JOIN IE802_ATTRIBUTES A ON A.IE802_ID=I.ID; 
+0

谢谢!这正是我需要的:) – monczek 2010-12-15 13:44:04