2017-01-30 5 views
2

Ich habe diese Tabelle in Sql und in Einsatz Form meines Projektes doppelte Aktualisierung verhindern verhindern ich den Benutzer aus demselben hdateWie in gespeicherte SQL-Prozedur

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 

Aber in Formular bearbeiten I don für Same hNummer Eingabe von‘ t wissen, wie das zu verhindern,

ich versuche, diesen Code in gespeicherten Prozedur aber für einige hNummer arbeiten, aber es hat einige andere hNummer verhindern in einem eigenen Datum

Create Procedure UpdCombHarByRecID 

@RecID int, 
@HarvestDate Date, 
@HiveNumber int, 
@HoneyComb Float, 

as 

if NOT Exists (Select * From tHoneyHarvest Where [email protected]) 
return 0 
//there is no record to be updated 

if Exists (Select * From tHoneyHarvest Where [email protected] AND 
HiveNumber=HiveNumber And 
[email protected]) 
// I hoped this should do the job 
//(RecID is PrimaryKey and it is identity) 
return 2 

Update tHoneyHarvest 

Set [email protected], 
[email protected], 
[email protected], 
[email protected] 

Where [email protected] 
return 1 
bearbeitet werden

jetzt wo ist das Problem?

+1

Verwenden Sie ein * Single * UPDATE ... FROM ... WHERE-Anweisung, deren 'WHERE' Klausel eliminiert Duplikate. Die mehreren "Exists" -Anweisungen machen den Code schwerer lesbar und verständlich. –

+0

@PanagiotisKanavos Benutzer kann Hnumber nicht ändern, aber HDate bearbeiten, ich möchte überprüfen, ob HNumber bereits einen Datensatz in neu bearbeiteten HDate hat, verhindern, dass alle Felder aktualisiert werden und nichts tun – SaraniO

+1

HiveNumber = HiveNumber wird immer wahr sein. Sollte HiveNumber = @ HiveNumber sein? – Vijay

Antwort