【问题标题】:Is there any way to restrict the data inserted into table if it is already present?如果已经存在,有什么方法可以限制插入到表中的数据?
【发布时间】:2016-01-15 18:13:01
【问题描述】:

我有一个sp,当它被触发时,数据将被插入到数据表中。如果要插入的数据已经存在于表中,我不希望将数据插入表中。无论如何我可以使用逻辑将数据限制在表格中。

我的查询是

declare @ident int =  IDENT_CURRENT( 'SADEV.RO_Transcript.ETQueueCtrl' )

insert into SADEV.RO_Transcript.ETQueueCtrl ([STU_ID],[STU_ORD_SEQ_NUM],[CreatedDate],[LastUpdatedDate],[ETQueueCtrlStatusCd],[ErrorFl])
select STU_ID
      ,STU_ORD_SEQ_NUM
      ,getdate()
      ,getdate()
      ,[ETQueueCtrlStatusCd] = 'N'
      ,'N'

from srdb_sr2_qa.dbo.SR0ROT rt
where STU_ORD_TYP_CD = 'A'
and ORD_DLVY_MTHD_CD = 'ET'
and STU_ORD_STAT_CD = 'C'

--and convert(varchar(1),STU_ORD_XPDT_FL) = @stu_ord_xpdt_fl
and case when @stu_ord_xpdt_fl = 'y' then GETDATE()
                            else case when ORD_PEND_INST_CD = '' then  STU_ORD_SBM_DT+ DATEADD (mi,480,STU_ORD_SBM_TM) 
                                    else  LAST_UPD_DT+ DATEADD (mi,480,LAST_UPD_TM) 
                                 end 
         end <= GETDATE()

select et.ETQueueCtrlID,
       ro.STU_ID,
       ro.STU_ORD_SEQ_NUM,
       ty.CAREER_CD,
       ty.CAREER_SUFX_CD


from SADEV.RO_Transcript.ETQueueCtrl et join srdb_sr2_qa.dbo.SR0ROT ro on et.STU_ID = ro.STU_ID 
                                                      and et.STU_ORD_SEQ_NUM = ro.STU_ORD_SEQ_NUM
                                   left join srdb_sr2_qa.dbo.SR0TYT ty on ro.STU_ID = ty.STU_ID
                                   where et.ETQueueCtrlID > @ident

【问题讨论】:

  • 您是否可以在桌面上放置“约束”,或者您是否正在寻找不同的方法?
  • 我正在尝试另一种方法
  • 目标表的唯一键是什么?
  • et.ETQueueCtrlID 是标识和唯一键

标签: sql sql-server tsql tsql-sequence


【解决方案1】:

您能否在插入的 WHERE 子句中添加如下内容?

AND 
NOT EXISTS
    (SELECT *
    FROM sadev.ro_transcript.etqueuectrl AS trg
    WHERE
        rt.stu_id = trg.stu_id
        AND
        rt.stu_ord_seq_num = trg.stu_ord_seq_num)

你可以调整上面的来过滤掉那些不应该重复的数据列

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多