DB 에 INSERT 할 때 중복데이터를 검사한 후에 새로 추가 된 값을 DB에 저장할 때 쓰는 구문은 아래와 같다.

 

=========================================================

 

USE 테이블명;


INSERT INTO 테이블명 ( 컬럼1 , 컬럼2 ) 
SELECT '컬럼1의 value',
 '컬럼2의 value'

FROM DUAL
WHERE NOT EXISTS (
SELECT 컬럼1  
FROM 테이블명  
WHERE 컬럼1 ='컬럼1의 값과 비교할 값' AND 컬럼2 = '컬럼2의 값과 비교할 값' );

 

=========================================================

 

근데 아래와 같은 경고 문구가 뜬다.

 

1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. 
Statements writing to a table with an auto-increment column after selecting from another table are unsafe

because the order in which rows are retrieved determines what (if any) rows will be written. 
This order cannot be predicted and may differ on master and the slave.

난 우분터 서버에 마리아 디비를 깔았기 때문에 설정 파일 위치는

/etc/mysql/my.cnf 에서 binlog_format=mixed 를 설정하면 된다는데

추후에 TIME ZONE 문제가 될 수 있는 글을 봤다.

이때는 또 binlog_format=row 라고 설정해줘야한다고 하는데 음 일단 일반적인 STATEMENT 로 남기는게 좋을 것 같다. 

'Database' 카테고리의 다른 글

MYSQL(Maria DB) 데이터 UTF8 설정하기  (0) 2020.03.06
ERD (Entity Relationship Diagram) 이란?  (0) 2020.03.05
DB설계 네이밍 룰  (2) 2020.03.05

+ Recent posts