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都设为主键了结果没用.不知为什么

解决方案 »

  1.   

    是你没设好吧。
    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]
      

  2.   

    create table tb(
    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' 中插入重复键。
    语句已终止。
     
     
      

  3.   

    看你的code,已经把ID 做成主键了啊! 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]