przed wstawieniem wyzwalacza dla wstawiania zduplikowanych wierszy do innej tabeli

Mam stół o nazwietblspmaster w której kolumnie sp mam unikalny indeks, więc nie będą wstawiane duplikaty, ale chcę wstawić zduplikowane wiersze dotblspduplicate . więc zdecydowałem się napisać do tego wyzwalacz. IN tabela główna, która jesttblspmaster rekordy zostaną wstawione za pomocą opcji Załaduj plikmysql

create trigger tblspmaster_noduplicate
before insert on tblspmaster
for each row
begin
  if ( select count(sp) from tblspmaster where sp=new.sp > 0 )then
    insert into tblspduplicate (sp,FileImported,AMZFileName)   values (NEW.sp,NEW.FileImported,NEW.AMZFileName)
  END
END

Mam listę pytań

Czy to właściwe podejście, aby zatrzymać duplikaty i wstawić je do innej tabeli?

Mój wyzwalacz nie jest wykonywany, ponieważ pokazuje pewne błędy składniowe

Odpowiedź na BŁĄD toError Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END END' at line 7

****************EDYCJA**************

tutaj znajduje się definicja tabeli dla tabeli głównej i zduplikowanej oraz instrukcje wyzwalania i ładowania pliku danych MySQL

CREATE TABLE IF NOT EXISTS `tblspmaster` (
  `CSN` bigint(20) NOT NULL AUTO_INCREMENT,
  `SP` varchar(10) NOT NULL,
  `FileImportedDate` date NOT NULL,
  `AMZFileName` varchar(50) NOT NULL,
  `CasperBatch` varchar(50) NOT NULL,
  `BatchProcessedDate` date NOT NULL,
  `ExpiryDate` date NOT NULL,
  `Region` varchar(50) NOT NULL,
  `FCCity` varchar(50) NOT NULL,
  `VendorID` int(11) NOT NULL,
  `LocationID` int(11) NOT NULL,
  PRIMARY KEY (`CSN`),
  UNIQUE KEY `SP` (`SP`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10000000000 ;




   CREATE TABLE IF NOT EXISTS `tblspduplicate` (
      `SP` varchar(50) NOT NULL,
      `FileImportedDate` date NOT NULL,
      `AMZFileName` varchar(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

use casper;
DELIMITER $
create trigger tblspmaster_noduplicate
before insert on tblspmaster
for each row
begin
  if ( select count(sp) from tblspmaster where sp=new.sp > 0 ) then
    insert into tblspduplicate (sp,FileImportedDate,AMZFileName)   values (NEW.sp,NEW.FileImportedDate,NEW.AMZFileName);
  END IF;
END$

DELIMITER ;






LOAD DATA local INFILE 'E://31october//SP//sp_files_sample1//400k sp00 6-19 E.csv'
INTO TABLE  tblspmaster
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(sp);

Oto jeden wątek w historii, że wykonuję to polecenie MySql z aplikacji konsoli c #, ale nie sądzę, aby miało to jakikolwiek wpływ na naszą strukturę lub program związany z db. Muszę także usunąćIGNORE 1 LINES instrukcja, ponieważ nie będzie wiersza nagłówka.

questionAnswers(1)

yourAnswerToTheQuestion