0
관심 분야와 제품을 나타내는 두 개의 테이블이 있습니다. 그들 사이에 many_many 관계를 구현 중입니다. 테이블을 만들 때 제품 또는 관심 레코드가 삭제되면 할당 테이블의 레코드가 삭제되도록 테이블 제약 조건을 작성하지 않았습니다.테이블 생성 후 테이블 참조 제약 조건 추가하기 MySQL
관심 표
CREATE TABLE IF NOT EXISTS `interests` (
`id` int(11) NOT NULL auto_increment,
`interest` varchar(255) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
제품 표
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL auto_increment,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=65 ;
할당 표
CREATE TABLE IF NOT EXISTS `interest_product_assignment` (
`id` int(11) NOT NULL auto_increment,
`interest_id` int(11) NOT NULL,
`product_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `product` (`product_id`),
KEY `interest` (`interest_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
내 이 제한 조건을 추가하려는 시도가 실패로 표시됩니다.
ALTER TABLE `interest_product_assignment` ADD CONSTRAINT `product` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
ALTER TABLE `interest_product_assignment` ADD CONSTRAINT `interest` FOREIGN KEY (`interest_id`) REFERENCES `interest` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
제품 레코드를 삭제하면 해당 할당 레코드가 삭제되지 않습니다. 이에
몇 가지 질문 :
- 이 제약 이런 종류의 올바른 구문인가?
- 테이블을 만들 때 이러한 제약 조건을 추가하지 않았거나 이미 테이블에 데이터가있는 것이 중요합니까?
- PHPMyADMIN에서 구속 조건이 성공적으로 추가되었는지 확인할 수 있습니까? PHPMyADMIN이 오류 메시지를 표시하지 않고 내 제약 조건을 무시했다고 생각하게되었습니다.
감사합니다, 이것은 매력을했다. – goose