2014-07-21 2 views
0

레코드가 있는지 확인하여 여러 레코드를 삽입해야하는 시나리오가 있습니다. 서버를 시작할 때마다 truncate table 문을 포함하는 sql script (.sql 파일)이 실행되므로 이전 행이 삭제됩니다. 스크립트를 실행하는 동안 이전 기록을 잃지 않고하고 스크립트에 truncate 문을 사용하지 않고 삽입하는 방법이 있나요존재하지 않는 경우 여러 레코드 삽입

INSERT INTO employeedetails (EmpNo, FirstName, LastName,DateOfBirth, EmailId, PANNo, PFNumber, BankName, JoiningDate, 
    Designation, Location, LOPDays, EmployeeStatus) VALUES 
    (1,'A','S','1965-04-14','[email protected]','ADJP','KN/43708/01','XYZ','2007-10-15','Director','PQR','NIL',1), 
    (2,'B','N','1971-01-23','[email protected]','AAGP','KN/43708/02','XYZ','2007-11-28','Director','PQR','NIL',1), 
    (3,'C','S','1982-10-05','[email protected]','AIBP','KN/43708/03','XYZ','2008-03-17','SA','PQR','NIL',1), 
    (7,'D','M','1978-02-17','[email protected]','AHRP','KN/43708/07','XYZ','2008-07-14','C T O','PQR','NIL',1), 
    (8,'E','D','1983-05-12','[email protected]','BUMP','KN/43708/08','XYZ','2008-05-05','TL','PQR','NIL',1); 

답변

1

당신은 INSERT가 employeedetails INTO

INSERT 무시 무시 사용을 시도 할 수 있습니다 (번호, 성, DateOfBirth, EmailId, PANNo, PFNumber, BankName, JoiningDate, 지정, 위치, LOPDays, EmployeeStatus) 값 (1, 'A', 'S', '1965-04-14' '[email protected]', 'ADJP', 'KN/43708/01', 'XYZ', '2007-10-15 ','PQR ','NIL ', 1), (2,'B ','N ','1971-01-23 ','[email protected] ','AAGP ' KN/43708/02 ','XYZ ','2007-11-28 ','감독 ','PQR ','NIL ', 1), (3,'C ','S ','1982-10 -05 ','[email protected] ','AIBP ','KN/43708/03 ','XYZ ','2008-03-17 ','SA ','PQR ','NIL ' ,(7, 'D', 'M', '1978-02-17', '[email protected]', 'AHRP', 'KN/43708/07', 'XYZ', '2008-07- 14 ','C T O ','PQR ','NIL ', 1), (8,'E ','D ','1983-05-12 ','[email protected] ' BUMP, KN/43708/08, XYZ, 2008-05-05, TL, PQR, NIL, 1);

편집 : 그것은 최신 버전으로 H2 database 업데이트 할 때 근무하고 DUPLICATE KEY UPDATE ON

을 사용했다. 샘플 코드 : org.h2.jdbc.JdbcSQLException :

INSERT INTO employeedetails (EmpNo, FirstName, LastName,DateOfBirth, EmailId, PANNo, PFNumber, BankName, 
JoiningDate,Designation, Location, LOPDays, EmployeeStatus, on_duplicate_update_count) VALUES 
(1,'A','S','1965-04-14','[email protected]','ADJP','KN/43708/01','XYZ','2007-10-15','Director','PQR','NIL',1,0), 
(2,'B','N','1971-01-23','[email protected]','AAGP','KN/43708/02','XYZ','2007-11-28','Director','PQR','NIL',1,0), 
(3,'C','S','1982-10-05','[email protected]','AIBP','KN/43708/03','XYZ','2008-03-17','SA','PQR','NIL',1,0), 
(7,'D','M','1978-02-17','[email protected]','AHRP','KN/43708/07','XYZ','2008-07-14','C T O','PQR','NIL',1,0), 
(8,'E','D','1983-05-12','[email protected]','BUMP','KN/43708/08','XYZ','2008-05-05','TL','PQR','NIL',1,0) 
ON DUPLICATE KEY UPDATE on_duplicate_update_count=on_duplicate_update_count+1; 

http://dev.mysql.com/doc/refman/5.6/en/insert.html
또는
INSERT ... DUPLICATE KEY UPDATE ON은
http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

+0

있어 예외 '에 의한 구문 오류 SQL 문 "INSERT IGNORE [*] INTO EMPLOYEEDETAILS' – SparkOn

+0

H2 데이터베이스의 경우에는 doesnot이 무시됩니다. – SparkOn

+0

최신 버전의 H2는 '이중화 키 업데이트'syn을 지원합니다 'IGNORE' 문법은 아닙니다. –

관련 문제