簡體   English   中英

僅當一個字段值不存在時才插入表值

[英]Insert into table values only if one field value does not exist already

我只想在不存在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)

如何打印錯誤,我想對此進行錯誤處理。 如果有重復..它應該打印消息。

這樣的事情應該起作用。

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

它處於工作狀態,請對其進行測試。 如果不存在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;則將在數據庫中進行輸入,請從中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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM