[英]How insert rows into table with two primary key?
我创建了下表:
CREATE TABLE [dbo].[tblArchLogDetail](
[RecordID] [numeric](18, 0) NOT NULL,
[TableName] [varchar](30) NOT NULL,
[TotalRecords] [int] NULL,
[ArchivedRecords] [int] NULL,
CONSTRAINT [PK_tblArchLogDetail] PRIMARY KEY CLUSTERED
(
[RecordID] ASC,
[TableName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
那么,如何将行插入此表中? 我不断收到错误“违反主键约束”。 这是我的示例代码:
Insert into tblArchLogDetail values(54,'tblAuditLogin',13128,0)
您在这里拥有的是所谓的“复合”主键。
这意味着您选择组成复合主键的值的任何组合都必须是唯一的。
您得到的错误仅表示该表中已经有一个记录,其RecordId为54,TableName为'tblAuditLogin'。
我认为您要尝试在RecordID
字段中添加一个自动递增的整数。 如果是这样,请使其成为身份字段:
CREATE TABLE [dbo].[tblArchLogDetail](
[RecordID] [numeric](18, 0) IDENTITY NOT NULL,
[TableName] [varchar](30) NOT NULL,
[TotalRecords] [int] NULL,
[ArchivedRecords] [int] NULL,
CONSTRAINT [PK_tblArchLogDetail] PRIMARY KEY CLUSTERED
(
[RecordID] ASC,
[TableName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
如果这不是您的意图,并且您确实想要在RecordID
和TableName
重复记录,请在RecordID
之前放置一个标识字段,并将其添加到PRIMARY KEY约束中:
CREATE TABLE [dbo].[tblArchLogDetail](
[ID] [bigint] IDENTITY NOT NULL
[RecordID] [numeric](18, 0) NOT NULL,
[TableName] [varchar](30) NOT NULL,
[TotalRecords] [int] NULL,
[ArchivedRecords] [int] NULL,
CONSTRAINT [PK_tblArchLogDetail] PRIMARY KEY CLUSTERED
(
[ID] ASC,
[RecordID] ASC,
[TableName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
如果这两个解决方案都无法解决,那么您还需要其他详细信息才能回答此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.