2016-04-22 8 views
0

別のテーブルに転送するためにトリガを使用するにはどのようにテーブルに追加された新しい行がIDVU **それは、カラム** UV文字列で構成されていを分離した場合、例えば二つの文字列(単語)に(チョブラック)、ジョーとテーブルに挿入されブラック9月V (ジョー用)U次のようになります。最終的な結果でデータを分割し、私はトリガーを作成したい

CREATE TRIGGER `edit` AFTER INSERT 
ON `idvu` 
FOR EACH ROW BEGIN 

    IF new.VU = '% %' THEN 
     SET @V = 'K' ,@U = 'P'; 
    else 
     SET @V = 'NEW',@U = 'NEW'; 
    END IF; 

    INSERT INTO sep (ID2,V, U) VALUES (new.ID,@V, @U); 

END$$ 

(ブラック用):問題は、私はある

Table sep

Table UDIVからトリガーを使用しているときに文字列を分割する必要はありませんか?

* MySQLで4日目のスクリプト作成スキルを免除してください!ちょうど(SUBSTRING_INDEXを追加は簡単であることが判明:) *

答えて

0

create table IDVU (
`ID` int not null , 
`VU` varchar(45), 
PRIMARY KEY (`id`), 
KEY `ix_VU` (`VU`) 
)ENGINE = InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 
Insert into idvu values (1,'Jo Black'); 

drop table sep; 
create table sep select 
    idvu.id as ID2 , 
    SUBSTRING_INDEX(SUBSTRING_INDEX(VU, ' ', 1), ' ', -1) as V, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(VU, ' ', 2), ' ', -1) as U 
     from IDVU; 
Alter table sep add ID1 mediumint(8) unsigned NOT NULL primary key AUTO_INCREMENT first; 
alter table sep add KEY `ix_ID2` (`ID2`) ; 
alter table sep add CONSTRAINT `C1` FOREIGN KEY (`ID2`) REFERENCES `IDVU`(`ID`) ON DELETE CASCADE ON UPDATE CASCADE; 

delimiter $$ 
drop trigger `edit` $$ 
CREATE TRIGGER `edit` AFTER INSERT 
ON `idvu` 
FOR EACH ROW BEGIN 

    IF new.VU like '% %' THEN 
     SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1) , 
      @U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1); 
    else 
     SET @V = 'NEW',@U = 'NEW'; 
    END IF; 

    INSERT INTO sep (ID2,V, U) VALUES (new.ID,@V, @U); 

END$$ 

delimiter ; 
関連する問題