SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[BasePay](
[ID] [int] IDENTITY(1,1) NOT NULL,
[EmployeesTypeNumbers] [tinyint] NULL,
[PostID] [int] NULL,
[BasePay] [int] NULL,
CONSTRAINT [PK_BASEPAY] PRIMARY KEY CLUSTERED
(
[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]
GO
/****** Object: ForeignKey [FK_BASEPAY_REFERENCE_EMPLOYEE] Script Date: 08/19/2011 09:33:35 ******/
ALTER TABLE [dbo].[BasePay] WITH CHECK ADD CONSTRAINT [FK_BASEPAY_REFERENCE_EMPLOYEE] FOREIGN KEY([EmployeesTypeNumbers])
REFERENCES [dbo].[EmployeesType] ([EmployeesTypeNumbers])
GO
ALTER TABLE [dbo].[BasePay] CHECK CONSTRAINT [FK_BASEPAY_REFERENCE_EMPLOYEE]
GO
/****** Object: ForeignKey [FK_BASEPAY_REFERENCE_POSITION] Script Date: 08/19/2011 09:33:35 ******/
ALTER TABLE [dbo].[BasePay] WITH CHECK ADD CONSTRAINT [FK_BASEPAY_REFERENCE_POSITION] FOREIGN KEY([PostID])
REFERENCES [dbo].[Position] ([PostID])
GO
ALTER TABLE [dbo].[BasePay] CHECK CONSTRAINT [FK_BASEPAY_REFERENCE_POSITION]
GO我上面这个表
PostID BasePay
11 100
11 11
上面的数据正常
但不能再有
11 100
11 11
要怎么设,复合主键我设了不起作用.
把PostID,BasePay都设为主键了结果没用.不知为什么
CREATE TABLE [dbo].[BasePay](
[ID] [int] IDENTITY(1,1) NOT NULL,
[EmployeesTypeNumbers] [tinyint] NULL,
[PostID] [int] NOT NULL,
[BasePay] [int] NOT NULL,
CONSTRAINT [PK_BASEPAY] PRIMARY KEY CLUSTERED
(
[PostID] ASC,BasePay
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
no int not null,
name varchar(5) not null Primary Key (no, name)
)
insert into tb
select 1,'a'
insert into tb
select 2,'a'
select * from tb
/*
no name
----------- -----
1 a
2 a(2 行受影响)*/insert into tb
select 2,'a' /*
消息 2627,级别 14,状态 1,第 1 行
违反了 PRIMARY KEY 约束 'PK__tb__853DC27105D9AC15'。不能在对象 'dbo.tb' 中插入重复键。
语句已终止。
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)