我想确保我没有在表中插入重复的行(例如,只有主键不同)。我的所有字段都允许 NULLS,因为我已经决定 null 表示“所有值”。由于空值,存储过程中的下列语句无法工作:
IF EXISTS(SELECT * FROM MY_TABLE WHERE
MY_FIELD1 = @IN_MY_FIELD1 AND
MY_FIELD2 = @IN_MY_FIELD2 AND
MY_FIELD3 = @IN_MY_FIELD3 AND
MY_FIELD4 = @IN_MY_FIELD4 AND
MY_FIELD5 = @IN_MY_FIELD5 AND
MY_FIELD6 = @IN_MY_FIELD6)
BEGIN
goto on_duplicate
END
因为 NULL = NULL 不为真。
如何在没有每列 IF IS NULL 语句的情况下检查重复项?