如何插入记录并确保整行是唯一的

Sha*_*Sha 2 sql

我想将多个值插入一行,但我想确保该行是唯一的,即没有重复的行。

我不确定如何做到这一点(如果只有一个值来检查即很容易,如下所示:SQL Server - 如何插入记录并确保它是唯一的)。

这是我的代码,但它不允许我插入唯一的行,因为它测试单列和多列组合。

CREATE TABLE myCities (
    UserID int null,
    CityID int null 
)

DECLARE @UserID int, @CityID int
SET @UserID = 1
SET @CityID = 1

INSERT INTO myCities (UserID,CityID) 
SELECT @UserID,@CityID
        WHERE 
            @UserID NOT IN ( SELECT UserID FROM myCities WHERE UserID = @UserID )
        AND 
            @CityID NOT IN ( SELECT CityID FROM myCities WHERE CityID = @CityID )
Run Code Online (Sandbox Code Playgroud)

use*_*019 5

唯一可靠的方法是将支票放入数据库中。在这种情况下,在表上创建一个唯一键,该键也将成为其主键,以便

-- syntax for MS/Sybase at least is
ALTER TABLE myCities
ADD CONSTRAINT uc_myCities UNIQUE (UserID,CityID)
Run Code Online (Sandbox Code Playgroud)

然后,当您插入重复项时,您将收到错误,并且您的代码必须处理它。