Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何删除时间戳是复合主键一部分的行?_Database_Sql Server 2008_Composite Key_Delete Row - Fatal编程技术网

Database 如何删除时间戳是复合主键一部分的行?

Database 如何删除时间戳是复合主键一部分的行?,database,sql-server-2008,composite-key,delete-row,Database,Sql Server 2008,Composite Key,Delete Row,我有一个记录每次收费的表格。复合密钥由以下部分组成: -时间戳 -银行号码 -分支机构编号 -操作员编号 -钱箱号码 最后四个并不总是唯一地识别自己。(这就是为什么时间戳在那里。) 退款后,我想从数据库中删除该行。如何执行此操作?主键或使主键成为唯一集的列。使用主键/组合列删除记录 Delete FROM <Table Name> Where Timestamp = @Timestamp AND [Bank Number] = @BranchNumber AND [Branch Nu

我有一个记录每次收费的表格。复合密钥由以下部分组成:
-时间戳
-银行号码
-分支机构编号
-操作员编号
-钱箱号码

最后四个并不总是唯一地识别自己。(这就是为什么时间戳在那里。)


退款后,我想从数据库中删除该行。如何执行此操作?

主键或使主键成为唯一集的列。使用主键/组合列删除记录

Delete
FROM <Table Name>
Where Timestamp = @Timestamp
AND [Bank Number] = @BranchNumber
AND [Branch Number] = @[BranchNumber
AND [Operator Number] = @OperatorNumber
AND [Cashbox Number] = @CashboxNumber
删除
从…起
其中Timestamp=@Timestamp
和[银行编号]=@分行编号
和[分支编号]=@[分支编号]
和[操作员编号]=@OperatorNumber
和[现金箱编号]=@CashboxNumber
另一个选项: 用两列追加表 退还的smallint 已删除或不活动的smallint


与其实际删除记录,不如将它们设置为您已收到且记录处于非活动状态。这样,您就可以在1个表中进行跟踪,而不必进行大量连接来获取随时间发生的事件的完整历史记录。-只是想一想。

为什么不简单地使用时间戳来选择要删除的记录?这些是时间戳吗p unique?我如何将时间戳保存到毫秒?时间戳是唯一的:YYYY-MM-DD HH:MM:SS.ms能否向表中添加唯一标识字段?这将需要更改数据库,这高于我的权限级别。对,我知道如何编写删除查询。我很好奇如何使用不必添加代理密钥。这需要更改数据库。注意:我们讨论了添加反转标志的选项,但我上面的人希望将其删除。我不确定我是否完全理解这个问题:您希望在不使用代理密钥的情况下获取时间戳。隔离要删除的记录是否有困难te?当您获得退款时,您是否有足够的数据属性可供使用,以便您可以隔离您提到的表中的记录?我还想添加时间戳,它实际上与日期时间无关。它是连续数字的二进制表示形式。有关详细信息,请阅读此处: