如何将ID插入另一个时间(ID是主键)

时间:2014-01-03 19:28:56

标签: c# winforms

我正在尝试制作考勤软件。我有一张这样的桌子:

ID       | time present  | date               |
0000001  | 07.00         | january, 1, 2014   |

如果我输入此值,则无法在表中插入,因为ID是主键:

0000001      | 07.00                 | january, 2, 2014   |

我需要我的表可以插入当前id但在datetime值上不同,如下所示:

0000001 | 07.00  | january, 1, 2014 |
0000001 | 07.15  | january, 2, 2014 |

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

ID列不应该是主键。这可能是与会者的身份吗?相应地重命名它。 然后添加另一个PK,也许是身份。

答案 1 :(得分:0)

我假设id是主键,您需要在表中添加其他键。您应该添加一个辅助密钥,例如项目计数,对于具有相同ID的每个附加项目,它将为0,1,2,3 ....

ID       Item Count
0000001 | 0 | 07.00 | january, 1, 2014 |
0000001 | 1 | 07.15 | january, 2, 2014 |

以下是完整的示例 表创建脚本

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TestExample](
    [ID] [int] NOT NULL,
    [ItemCount] [int] NOT NULL,
    [TimePresent] [time](7) NOT NULL,
    [Date] [date] NOT NULL,
 CONSTRAINT [PK_TestExample] PRIMARY KEY CLUSTERED 
(
    [ID] ASC,
    [ItemCount] 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

插入SQL语句

  Insert into [TestExample] (ID, ItemCount, TimePresent, Date)  
  values ( 1, 1, '7:00', '2013-01-01'), 
         ( 1, 2, '7:15', '2013-01-01')

答案 2 :(得分:0)

很容易!!! 你要做的是制作一个复合主键。并且由于当前时间的值发生变化但ID没有变化,您必须将当前时间添加到现有主键,然后ID和当前时间将是复合主键