如果存在重复数据则显示错误,而不显示空值

时间:2014-09-06 06:13:47

标签: sql sql-server tsql

我希望当用户插入重复数据(代码值)时为用户显示错误,以及当用户向用户插入空值时允许。

我的代码适用于重复代码,但是当用户为空值时,我不希望显示错误并允许用户插入数据。

我的代码是:

IF  EXISTS (
        SELECT cd.Code 
        FROM chqDocuments cd
        INNER JOIN chqDocumentTypes cdt
            ON cdt.ID = cd.chqDocumentTypeID

        INNER JOIN chqDocumentTypeClassifications cdtc 
            ON cdtc.ID = cdt.chqDocumentTypeClassificationID

        WHERE
        (cd.Code = @Code )  AND 
        cdtc.id = @chqDocumentTypeClassificationID_Entry And 
        (LTRIM(RTRIM(cdtc.Code))='11' OR LTRIM(RTRIM(cdtc.Code))='12')

    )

BEGIN
    RAISERROR('showerror',16,1) 
    RETURN
END

1 个答案:

答案 0 :(得分:2)

假设@Code是用户输入的代码值,此代码将按原样运行,因为以下代码永远不会评估为真正的语句:

cd.Code = NULL -- even NULL != NULL; NULL IS NULL only works

由于永远不满足该语句,因此EXISTS子句也永远不会满足。因此,将允许用户为代码输入NULL值而不会抛出错误。