버그인지 아니면 아직 지원하지 않는것인지 모르겠습니다.
A Table => Parent Table
B Table => Child Table
위 두개의 Table은 Foreign Key로 CONSTRAINT에 의한 ON DELETE CASCADE ON UPDATE CASCADE로 되어있습니다.
C Table => ETC Table
CREATE TABLE B (
`SysId` varchar(22) NOT NULL default '-',
`CoordX` mediumint(8) unsigned default NULL,
`CoordY` mediumint(8) unsigned default NULL,
`PSysId` varchar(22) NOT NULL default '-',
PRIMARY KEY (`SysId`),
KEY `IDX_PSYSID` (`PSysId`),
CONSTRAINT `FK_B` FOREIGN KEY (`PSysId`) REFERENCES `A` (`SysId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TRIGGER `TRD_B` AFTER DELETE ON `B`
FOR EACH ROW
BEGIN
Delete from C Where SysId = OLD.SysId and CoordX = OLD.CoordX
END;
CREATE TABLE C (
`SysId` varchar(22) NOT NULL default '-',
`CoordX` mediumint(8) unsigned default NULL,
`TEST` mediumint(8) unsigned default NULL,
PRIMARY KEY (`SysId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
위와같이 설정되어있을때 A Table의 데이터를 삭제하면 A에 해당하는 B는 Foreign Key로인한 삭제가 되는데
이때 B에 있는 Delete Trigger가 Action이 안됩니다.
제가 알기로는 위와같이 하였을때 C까지 삭제가 되어야하는것으로 알고있습니다.
원래 이런가요? 아니면 버그인가요?
P.S : Delete from B where SysId ='1111'
이렇게하면 C Table의 내용은 삭제가 됩니다. Trigger에의해서
|