我想做的是:
在现有表中:“users”。
如果条目尚不存在,请插入一个新条目。
到目前为止,我在php中尝试的是:
INSERT INTO `users` (`ID`, `NAME`, `CREATIONDATE`)
SELECT NULL, '$name', CURRENT_TIMESTAMP
FROM users
WHERE NOT EXISTS(
SELECT users.NAME FROM users
WHERE users.NAME = '$name'
)
这段代码有效;我有没有重复的新条目。
问题是:
为了更干净和节省请求的数量,我只想构建一个请求以避免执行 X INSERT INTO
在php循环中。
例如:
foreach ( $list as $name )
{
$sql = "INSERT INTO `users` (`ID`, `NAME`, `CREATIONDATE`)";
$sql .="SELECT NULL, '$name', CURRENT_TIMESTAMP FROM users
WHERE NOT EXISTS(
SELECT users.NAME FROM users
WHERE users.NAME = '$name'
)
);
$rq = $pdo->prepare ( $sql );
$rq->execute ();
}
1条答案
按热度按时间yptwkmov1#
我的建议是对列名使用unique约束并执行以下查询
插入
users
(ID
,NAME
,CREATIONDATE
)值(1,名称1,1-2-3),(2,名称2,1-2-3),(3,名称3,1-2-3)此查询将是原子查询。这意味着,如果存在违反完整性约束的情况,则不会插入任何行