SQL은 고유 키의 존재를 기반으로 데이터베이스 테이블에 레코드를 삽입하거나 업데이트하는 여러 가지 방법을 제공합니다. 이 가이드에서는 시도한 것이 작동하지 않는 이유를 설명하고 MySQL의 INSERT ... ON DUPLICATE KEY UPDATE
문을 사용하여 테스트된 두 가지 솔루션을 제공합니다.
시도가 실패한 이유
ON DUPLICATE KEY UPDATE
을 사용하려고 시도했지만 subs_email
열에 고유 제약 조건이 누락되어 쿼리가 실패했습니다. IF EXISTS
및 BEGIN/END
블록은 MySQL에 유효한 SQL 구문이 아닙니다. 해결책 1: 고유 제약 조건을 만들고 INSERT ... ON DUPLICATE KEY UPDATE 사용
subs_email
열에 고유 제약 조건이 있는지 확인하세요. <code class="language-sql">ALTER TABLE subs ADD UNIQUE (subs_email);</code>
<code class="language-sql">INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE subs_name = VALUES(subs_name), subs_birthday = VALUES(subs_birthday);</code>
해결책 2: ON DUPLICATE KEY UPDATE를 사용하여 매개변수화된 준비된 문
<code class="language-java">String sql = "INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES (?, ?, ?)" + " ON DUPLICATE KEY UPDATE subs_name = ?, subs_birthday = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, name); preparedStatement.setString(2, email); preparedStatement.setString(3, birthday); preparedStatement.setString(4, name); // 重复键更新的第二个参数 preparedStatement.setString(5, birthday); // 重复键更新的第三个参数 preparedStatement.executeUpdate();</code>
SQL 삽입 공격을 방지하려면 매개변수 자리 표시자를 사용해야 합니다.
이러한 솔루션을 적용하면 subs_email
열의 고유성을 기반으로 데이터베이스 테이블의 레코드를 효율적으로 삽입하거나 업데이트할 수 있습니다.
위 내용은 IF EXISTS UPDATE ELSE INSERT INTO를 사용하여 MySQL에서 레코드를 효율적으로 삽입하거나 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!