2012-08-23 57 views
0

我想填充从table1到table2的记录。 table1有三列,没有主键。表2具有三个相同的列,标识列作为主键。以下是我的查询和定义。但不知何故,我得到一个错误,不能将值NULL插入'notes_id',表'table1;列不允许有空值。 INSERT失败。 该声明已被终止。 我错过了什么?如何填充table1到table2的日期?

CREATE TABLE [dbo].[table1](
    [notes_id] [int] NOT NULL, 
    [acty_id] [varchar](80) NOT NULL, 
    [notes_datetime] [datetime] NOT NULL, 
    [notes_data] [nvarchar](max) NULL, 
CONSTRAINT [PK_tblSRMNotes] PRIMARY KEY CLUSTERED 
(
    [notes_id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

CREATE TABLE [dbo].[table2](
    [acty_id] [varchar](80) NOT NULL, 
    [notes_datetime] [datetime] NOT NULL, 
    [notes_data] [nvarchar](max) NULL 
) ON [PRIMARY] 

insert into table1(acty_id, notes_datetime, notes_data) 
    select s.acty_id, s.notes_datetime, s.notes_data 
    from table2 s 

回答

2

您已将第一列设置为NOT NULL,并将其声明为PRIMARY KEY,但您尚未指出应该如何填充它。通常这是通过IDENTITY列:

CREATE TABLE [dbo].[table1] 
(
    [notes_id] [int] IDENTITY(1,1) NOT NULL, 
---------------------^^^^^^^^^^^^^ 
    [acty_id] [varchar](80) NOT NULL, 
    [notes_datetime] [datetime] NOT NULL, 
    [notes_data] [nvarchar](max) NULL, 
    CONSTRAINT [PK_tblSRMNotes] PRIMARY KEY CLUSTERED (notes_id) 
); 
+0

谢谢。我忘了设置身份。 – GLP

相关问题