2013-04-01 49 views
0

我只想在field_tag值不存在时才插入表中。我想在插入表之前检查。如果收据存在于相同的field_tag值之前。如果不存在,那么只有我想插入。我使用SQL Server 2008只有当一个字段值不存在时才插入表值

INSERT INTO [INVENTORY].[TBL_RECEIPTS] 
      ([TicketNbr] 
     ,[RevisionNbr] 
      ,[Location_ID] 
      ,[ContractNumber] 
      ,[Storage_ID] 
     ,[VarietyID] 
      ,[GrossWeight] 
      ,[TareWeight] 
      ,[Carrier] 
      ,[Receipt_date] 
      ,[Last_update] 
      ,[Inv_weight] 
     ,[SAPBatch] 
     ,[MoistureFactor] 
     ,[Load_Harvested] 
     ,[FIELDID] 
     ,[GROWER_LOAD_NBR] 
     ,[HARVEST_NBR] 
     ,[TRACE_WORMS] 
     ,[COR_CERT] 
     ,[GFF_DEST] 
--- ,[GFF_CONTRACT] 
     ,[CAB_ID] 
     ,[sOURCE] 
     ,[CREATED_BY] 
     ,[TOTALBONUSES] 
     ,[PIDNUMBER] 
     ,[CARRIERVENDORID] 
     ,[HAUL_ZONE] 
     ,[FIELD_Tag] 
     ,[Station] 
     ,[COUNTY] 
     ,[GradeDate] 
     ,[Load_Received] 
     ,[Load_Processed] 

) 
    VALUES 
      (@CERT 
     ,@RevisionNbr 
      ,@Location_ID 
      ,@ContractNUmber 
      ,@Storage_ID 
     ,@VarietyID 
      ,@Gross_Weight 
      ,@TareWeight 
      ,@CarrierName 
      ,@receipt_date 
      ,Getdate() 
      ,@Inv_weight 
     ,@receiptbATCHnbr 
     ,@DockageWeight 
     ,@HARVEST_DT 
     ,@FIELDID 
     ,@GROWER_LOAD_NBR 
     ,@HARVEST_NUMBER 
     ,@TRACE_WORMS  
     ,@COR_CERT 
     ,@GFF_DEST 
--- ,@CONTRACT 
     ,@CAB_ID 
     ,'I' 
     ,'Scale Interface' 
     ,0 
     ,@ContractPIDNumber 
     ,@CARRIERID 
     ,@HAUL_ZONE 
     ,@FIELD_TAG 
     ,@STATION 
     ,@COUNTY 
     ,@GRADE_DT 
     ,@Arrival_dt 
     ,@current_Date 
) 

我不喜欢这样的:

insert into yourtable 
(field1, field2, etc) 
select value1, value2, etc 
where not exists 
(SELECT * FROM [INVENTORY].[TBL_RECEIPTS] WHERE Field_Tag = @FIELD_TAG) 

如何打印错误,我想要做的错误处理这一点。如果重复,那么应该打印消息。

回答

3

像这样的东西应该工作。

insert into yourtable 
(field1, field2, etc) 
select value1, value2, etc 
where not exists 
(subquery to specify 
condition under which you don't insert record) 

编辑从这里开始

另一种方法,如果记录已经存在

declare @Records as int; 
set @Records = select count(*) from tbl_receipts 
where field_tag = @Field_Tag; 

if @Records > 0 
begin 
select 'record exists' 
end 

else 
begin 
insert query 
select 'record added' 
end 
+0

类似,我想知道在子查询和条件中写什么。整个sp在这里http://pastebin.com/0yFAXM59 –

+0

在这个语句中SELECT的语法不正确set @Records =来自[INVENTORY]的SELECT count(*)[TBL_RECEIPTS] WHERE field_tag = @Field_Tag; –

0

它是处于工作状态,请测试它来通知用户。如果没有输入imei = 69212和description ='dfhjsdfh' insert into events select 1,2,3 from ( select 1 from events where not exists ( select 1 from events where imei=69212 and description='dfhjsdfh' group by imei) group by imei) AS tt;

相关问题