主键是:MedicalNo 、DeptID 、AppointTime 、PeriodID ,怎么获取主键插入异常? 我插入同一记录,存储过程只是回滚,并没有报错
- SQL code
CREATE PROCEDURE P_Appoint @MedicalNo NVarChar (50),@MedicalName NVarChar (50),@DeptID NVarChar (50),@PeriodID NVarChar (50),@AppointTime datetime,@ManCreate NVarChar (50),@TimeCreate datetime,@ShiftID NVarChar (50),@Remarks NVarChar (100),@Descript NVarChar (100),@SNO NVarChar (50) outputASdeclare @Counter intset xact_abort on --这样写,当一个有错误的时候会回滚整个事务begin transelect top 1 @Counter=SerialNO from SerialList ---取得序列号set @[email protected]+1 ---序列号+1update SerialList set [email protected] ---更新SerialListset @SNO=convert(char(8),getdate(),112) + 'LW' + right(@counter+100000000,8) --日期+序列号insert into AppointList(MedicalNo,MedicalName, DeptID,PeriodID,AppointTime,ManCreate,TimeCreate,ShiftID,SNO,Remarks,Des)values(@MedicalNo,@MedicalName, @DeptID,@PeriodID,@AppointTime,@ManCreate,@TimeCreate,@ShiftID,@SNO,@Remarks,@Descript)commit tranGO
------解决方案--------------------
------解决方案--------------------
我建议你应该判断后再插入,而不是去获取这个错误.
主键是:MedicalNo 、DeptID 、AppointTime 、PeriodID ,怎么获取主键插入异常? 我插入同一记录,存储过程只是回滚,并没有报错
if not exists(select 1 from tb where MedicalNo = ... and DeptID = ... and AppointTime = ... and PeriodID = ... )
insert 数据
else
提示主键重复