MySQL - 삽입 오류 무시: 중복 항목
저는 PHP에서 일하고 있습니다.
고유한 필드를 가진 DB에 새로운 레코드를 삽입하는 적절한 방법을 알려주세요.저는 많은 레코드를 일괄적으로 삽입하고 있으며, 새로운 레코드를 삽입하고 싶을 뿐 중복 엔트리에 오류가 발생하지 않았으면 합니다.
먼저 SELECT를 작성하여 INSERT 전에 엔트리가 이미 있는지 확인하고 SELECT가 레코드를 반환하지 않은 경우에만 INSERT를 수행할 수 있습니까?그러지 않았으면 좋겠어요.
어떻게든 MySQL에 이 삽입물을 무시해 달라고 말하고 싶습니다.
감사해요.
INSERT를 사용할 수 있습니다. 중복 레코드가 있을 때 아무런 조치도 취하지 않으려면 구문을 무시하십시오.
오래된 레코드를 같은 키의 새 레코드로 덮어쓰려면 REPLACE INTO 구문을 사용할 수 있습니다.
또는 INSERT를 사용할 수 있습니다. 중복이 발생했을 때 대신 레코드를 갱신할 경우 ON DUPLICE KEY UPDATE 구문.
편집: 몇 가지 예를 추가하려고 합니다.
예
이름이 붙은 테이블이 있다고 가정해당 테이블은tbl
두 개의 컬럼이 있습니다.id
그리고.value
. id=1과 value=1의 엔트리가 1개 있습니다.다음 문을 실행하는 경우:
REPLACE INTO tbl VALUES(1,50);
id=1 value=50인 레코드가 하나 남아 있습니다.그러나 전체 레코드는 먼저 삭제되고 다시 삽입됩니다.그 후, 다음과 같이 입력합니다.
INSERT IGNORE INTO tbl VALUES (1,10);
작업은 정상적으로 실행되지만 아무것도 삽입되지 않습니다.id=1과 value=50이 아직 남아 있습니다.마지막으로:
INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;
이제 id=1 및 value=200인 단일 레코드가 있습니다.
EXISTS 조건을 사용하면 중복된 정보를 삽입하지 않도록 할 수 있습니다.
예를 들어 프라이머리 키가 client_id인 clients라는 이름의 테이블이 있는 경우 다음 문을 사용할 수 있습니다.
INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE not exists (select * from clients
where clients.client_id = suppliers.supplier_id);
이 문은 하위 선택과 함께 여러 레코드를 삽입합니다.
단일 레코드를 삽입하려면 다음 문을 사용할 수 있습니다.
INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where clients.client_id = 10345);
듀얼 테이블을 사용하면 값이 현재 테이블에 저장되어 있지 않은 경우에도 select 문에 값을 입력할 수 있습니다.
http://www.techonthenet.com/sql/insert.php 에서
트리거를 사용할 수 있습니다.
중복 테이블(가능하면 임시 테이블)을 고유한 제약 없이 만들고 해당 테이블에 대량 로드를 수행합니다.그런 다음 임시 테이블에서 고유한(DISTINCT) 항목만 선택하고 대상 테이블에 삽입합니다.
$duplicate_query=mysql_query("SELECT * FROM student") or die(mysql_error());
$duplicate=mysql_num_rows($duplicate_query);
if($duplicate==0)
{
while($value=mysql_fetch_array($duplicate_query)
{
if(($value['name']==$name)&& ($value['email']==$email)&& ($value['mobile']==$mobile)&& ($value['resume']==$resume))
{
echo $query="INSERT INTO student(name,email,mobile,resume)VALUES('$name','$email','$mobile','$resume')";
$res=mysql_query($query);
if($query)
{
echo "Success";
}
else
{
echo "Error";
}
else
{
echo "Duplicate Entry";
}
}
}
}
else
{
echo "Records Already Exixts";
}
언급URL : https://stackoverflow.com/questions/812437/mysql-ignore-insert-error-duplicate-entry
'programing' 카테고리의 다른 글
MySQL에서 문자열을 최신 상태로 변환하는 방법 (0) | 2023.01.23 |
---|---|
선택 쿼리에서 테이블을 업데이트하는 방법 (0) | 2023.01.23 |
jQuery 글로벌 키 누르기 이벤트 메서드 호출 vuejs 메서드가 예상대로 작동하지 않습니다.왜요? (0) | 2023.01.23 |
JavaScript를 사용하여 브라우저의 뒤로 버튼을 정지하려면 어떻게 해야 합니까? (0) | 2023.01.23 |
Mysql: 테이블에서 다른 테이블에 없는 행을 선택합니다. (0) | 2023.01.23 |