我在Sql
和我项目的插入Form
中有这个表格,我阻止用户为同一个HNumber输入相同的HDate
RecID HDate HNumber HComb
----------------------------------------------
1 2017-1-30 1 12
3 2017-1-29 1 15
5 2017-1-30 2 12
6 2017-1-30 3 12
9 2017-1-30 4 12
但在编辑表格中,我不知道如何防止这种情况,
我在存储过程中尝试此代码,但它适用于某些HNumber,但它阻止其他一些HNumber在其中编辑自己的日期
Create Procedure UpdCombHarByRecID
@RecID int,
@HarvestDate Date,
@HiveNumber int,
@HoneyComb Float,
as
if NOT Exists (Select * From tHoneyHarvest Where RecID=@RecID)
return 0
//there is no record to be updated
if Exists (Select * From tHoneyHarvest Where HarvestDate=@HarvestDate AND
HiveNumber=HiveNumber And
RecID!=@RecID)
// I hoped this should do the job
//(RecID is PrimaryKey and it is identity)
return 2
Update tHoneyHarvest
Set HarvestDate=@HarvestDate,
HoneyType=@HoneyType,
HoneyComb=@HoneyComb,
HoneyDetails=@HoneyDetails
Where RecID=@RecID
return 1
现在问题出在哪里了?
答案 0 :(得分:2)
最好的方法是使用非聚簇索引.non聚簇索引可防止在插入或更新发生时出现重复记录。
CREATE UNIQUE INDEX MyIndex ON ExcelTable(HDate, HNumber)
请参阅
答案 1 :(得分:1)
感谢评论方面的帮助。问题是由于程序中的拼写错误。
if Exists (Select * From tHoneyHarvest Where HarvestDate=@HarvestDate AND
HiveNumber=@HiveNumber And
RecID!=@RecID)
我忘了在HiveNumber之前添加@