перед вставкой триггер для вставки повторяющихся строк в другую таблицу

У меня есть столtblspmaster в котором столбец sp у меня есть уникальный индекс, поэтому не будет вставлено дубликатов, но я хочу вставить дублирующиеся строки вtblspduplicate , поэтому я решил написать триггер для этого. В основной таблице, котораяtblspmaster записи будут вставлены с использованием файла загрузкиmysql

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

У меня есть список вопросов

Это правильный подход, чтобы остановить дубликаты и вставить в другую таблицу?

Мой триггер не выполняется, поскольку он показывает некоторые синтаксические ошибки

ОШИБКА ответError 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

****************РЕДАКТИРОВАНИЕ **************

Вот определение таблицы для основной и дубликатов таблиц, а также триггера и загрузки данных в файл 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);

Вот один поворот в истории, что я выполняю эту команду MySql из консольного приложения c #, но я не думаю, что это каким-либо образом повлияет на нашу структуру или программу, связанную с БД. Мне тоже нужно убратьIGNORE 1 LINES Заявление, так как не будет строки заголовка.

Ответы на вопрос(1)

Ваш ответ на вопрос