エラーコード:フィールドリストの1109不明なテーブルの番号 "トリガがテーブルを認識しません(トリガーは、別のテーブルに挿入するために複数の行にNEW.valuesの内容を分割する)
なぜ私のコードはテーブル番号がないと思って、それを修正する方法はですか?
そして、可能であれば、回答の質問をなぜトリガーで使用するのですか?私は2 行
たぶん十分な方法があるにそれらを分割することができ、いくつかの列フィールドで二つの言葉を持っているテーブルからのようsunstring_indexと組み合わせ使用されている
P.S番号テーブル?
drop schema exp;
create database exp;
use exp;
create table IDVU (
`ID` int(8) unsigned not null auto_increment ,
`VU` varchar(45) not null,
PRIMARY KEY (`id`),
KEY `ix_VU` (`VU`)
)ENGINE = InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
create table sep (
ID1 int(8) unsigned NOT NULL primary key auto_increment,
ID2 int(8) unsigned not null,
V varchar(45) not null,
U varchar(45) not null,
KEY `ix_ID2` (`ID2`),
CONSTRAINT `ID_IDVU_SEP` FOREIGN KEY (`ID2`) REFERENCES `IDVU` (`ID`)
ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
create table numbers select 1 n union all select 2;
delimiter $$
CREATE TRIGGER `edit` AFTER INSERT
ON `idvu`
FOR EACH ROW BEGIN
IF new.VU like '% %' THEN
SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', numbers.n), ' ', -1),
@U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', numbers.n), ' ', -1);
else
SET @V = 'NEW',@U = 'NEW';
END IF;
INSERT INTO sep (ID2,V, U) VALUES (new.ID,@V, @U);
END$$
delimiter ;
select * from idvu order by ID;
select * from sep order by ID1;
insert into iDVU value (2,'Dd Rr');
UPDATE: OPは異なる行にtable1
に挿入NEW.valuesの内容を壊すとtable2
に挿入するトリガーAFTER INSERT
を作成したいと考えています。
Table1
Number Player Team Position
1 Jan Ho Team 1 C
2 Mike Dog Team 3 LW
4 8 Slim Dre Team 4, Team 1 G D
6 Mad Dog Team 2 D
行にブレークそれをし、あなただけの文字列を破るしようとしているならば、あなたはこのようにそこでは1と2をハードコーディングすることができますtable2
Table2
Number Player Team Position
1 Jan Ho Team 1 C
2 Mike Dog Team 3 LW
4 Slim Dre Team 4 G
8 Slim Dre Team 1 D
6 Mad Dog Team 2 D
?それから選択する必要があります。 –
テーブルIDVUがテーブル1の情報で更新される場合は、[1](http://imgur.com/DUDjhET)になります。トリガーが動作し、link1のようにtable1(IDVU)の値をtable2(sep)に挿入します。 –
あなたがしようとしていることについて私の答えを見てください。'numbers'テーブルは必要ありません。なぜなら、現在はテーブルの値をハードコーディングしているからです。 –