아빠는 개발자

[mysql] mysql ignore 본문

카테고리 없음

[mysql] mysql ignore

father6019 2024. 11. 1. 20:55
728x90
반응형

IGNORE는 MySQL에서 중복된 키 또는 제약 조건을 위반하는 행을 무시하고 오류를 방지하는 데 사용할 수 있는 옵션입니다. INSERT, UPDATE, DELETE와 같은 쿼리에서 유용하게 사용할 수 있습니다. IGNORE를 사용하면 MySQL은 제약 조건 위반을 무시하고 쿼리를 계속 진행합니다. 여기 예제를 보겠습니다.

1. INSERT IGNORE 예제

기본적으로, INSERT 명령어는 중복된 키 또는 제약 조건을 위반하는 경우 오류를 발생시키지만, IGNORE를 사용하면 이를 무시하고 나머지 행을 추가합니다.

 

 

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) UNIQUE
);

-- 데이터 삽입
INSERT INTO users (id, username) VALUES (1, 'john');
INSERT IGNORE INTO users (id, username) VALUES (1, 'john');  -- 중복된 id이므로 무시됩니다.
INSERT IGNORE INTO users (id, username) VALUES (2, 'jane');  -- 성공적으로 삽입됩니다.

 

이 예제에서는 첫 번째 INSERT IGNORE 문에서 중복된 id가 있으므로 무시되고, id가 2인 행만 추가됩니다.

2. UPDATE IGNORE 예제

UPDATE 문에서 IGNORE를 사용하면 제약 조건을 위반하는 경우 무시하고 나머지 업데이트 작업을 계속 수행합니다.

 

CREATE TABLE products (
    id INT PRIMARY KEY,
    stock INT CHECK (stock >= 0)  -- 재고는 0 이상이어야 함
);

-- 데이터 삽입
INSERT INTO products (id, stock) VALUES (1, 10), (2, 5);

-- 재고를 줄이는데, 결과가 음수인 경우 무시
UPDATE IGNORE products SET stock = stock - 20 WHERE id = 1;

 

이 예제에서는 stock의 값이 음수가 되는 경우가 있으므로 일반적인 UPDATE 문에서는 오류가 발생하지만, IGNORE가 있으면 해당 행은 무시됩니다.

3. DELETE IGNORE 예제

외래 키 제약 조건으로 인해 DELETE 문이 실패할 수 있습니다. IGNORE를 사용하면 일부 제약 조건을 무시하고 삭제를 진행할 수 있습니다.

 

CREATE TABLE orders (
    id INT PRIMARY KEY,
    product_id INT,
    FOREIGN KEY (product_id) REFERENCES products(id)
);

-- 데이터 삽입
INSERT INTO orders (id, product_id) VALUES (1, 1), (2, 2);

-- products 테이블의 특정 행 삭제 시 외래 키 위반 무시
DELETE IGNORE FROM products WHERE id = 1;

 

 

위 예제에서 DELETE IGNORE를 사용하여 products 테이블에서 id = 1 행을 삭제할 때, 외래 키 제약 조건 위반을 무시하고 계속 실행합니다.

728x90
반응형