【发布时间】: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