【发布时间】:2018-08-14 13:51:48
【问题描述】:
我正在尝试防止创建重复的行。我当前的语句有效,这意味着它可以防止创建重复项,但它始终将执行返回为成功,这意味着如果没有创建任何行,我不会收到“错误”消息。
谢谢
$tsql = "
IF NOT EXISTS ( SELECT 1 FROM SOMETABLE WHERE SOMEROW = 'VALUE' )
BEGIN
INSERT INTO SOMETABLE (
SOMEROW
)
VALUES (
'SOMETHING'
)
END
";
$stmt = sqlsrv_query( $conn, $tsql);
if(gettype($stmt)=='boolean'){
if($stmt){
echo "Success";
} else {
echo "This Row already Exists";
die( print_r( sqlsrv_errors(), true));
}
如果没有创建任何内容,我想失败 sql 执行,在这种情况下没有这样做。 (它总是作为成功返回。
谢谢
【问题讨论】:
-
你不能依赖
SELECT的结果来判断唯一性,你需要对数据库本身使用唯一性约束,然后检查插入尝试的结果。 -
@RonnieOosting 他们正在使用 SQL Server。
-
在 SQL 中使用 IF ELSE 怎么样,ELSE 查询会导致固有的失败 - 从而给我想要的错误。这有多现实?
-
@pufAmuf 更新了答案。我希望这会有所帮助。
标签: php sql sql-server sqlsrv