【发布时间】:2012-03-07 08:01:20
【问题描述】:
我有一个带有主键的表和一个用于插入该表的存储过程。我无法控制存储过程,也无法更改它。有时,该过程会返回许多记录和 1 条主键列的值为 NULL 的记录。目前整批新行插入失败。
如何将我的代码或表配置为仅在具有 NULL 值的 1 行上失败,但允许插入其他行?
这是一些测试代码:
IF OBJECT_ID('tempdb..#tbl') IS NOT NULL
DROP TABLE #tbl
CREATE TABLE #tbl (
col INT NOT NULL,
CONSTRAINT PK_tbl PRIMARY KEY (col ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
SET XACT_ABORT OFF
--Imagine this is the procedure that cannot be edited
insert into #tbl (col) values
(null), (1), (2)
--Ideally, the table would have 1 and 2
select * from #tbl
【问题讨论】:
-
只是出于好奇,为什么不能改变程序?
-
阅读一下。 stackoverflow.com/questions/728898/…。虽然远非辉煌......
-
如果值为 null 以忽略这些行或默认为“有效”值,期望的结果是什么。
标签: sql sql-server sql-server-2008 tsql