TSQL:检查将数据插入 table

TSQL : Check inserting data into the table

假设我有这个 table :

CREATE TABLE [dbo].[finaleTable](
    [VENDId] [bigint] NOT NULL,
    [companyName] [nvarchar](4) NULL,
    ----Others field

    CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED   ([VENDId])
) ON [PRIMARY]
GO

这个查询:

INSERT INTO dbo.finaleTable
SELECT *
FROM Tmp1

在将数据插入 table 之前,我必须检查这两个字段的完整性约束。如果值存在,则移至从 table TMP1 获取的下一行数据。如果它们不存在,则插入该行。

你能建议我如何才能做到这一点吗?

我认为你需要 MERGE 这样的:

MERGE dbo.finaleTable AS target
USING (SELECT VENDId, companyName... FROM Tmp1) AS source
ON target.VENDId = source.VENDId AND ISNULL(target.companyName,'') = ISNULL(source.companyName,'')
WHEN NOT MATCHED THEN
    INSERT (VENDId, companyName...)
    VALUES (source.VENDId, source.companyName...)

如果companyName需要检查它必须是NOT NULL

你也可以使用 where exists -

insert into finaleTable
select * from table1 as a
where not exists(select 1 from finaleTable as b where b.VENDId = a.VENDId)