Я использую этот код для создания таблицы:
$playlist_table = $wpdb->prefix . "vpl_playlists";
$sql = "CREATE TABLE $playlist_table (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`options` text DEFAULT NULL,
PRIMARY KEY (`id`)
) $charset_collate;";
dbDelta( $sql );
$media_table = $wpdb->prefix . "vpl_media";
sql = "CREATE TABLE $media_table (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`options` longtext DEFAULT NULL,
`order_id` int(11) unsigned DEFAULT NULL,
`playlist_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
INDEX `playlist_id` (`playlist_id`),
CONSTRAINT `vpl_media_ibfk_1` FOREIGN KEY (`playlist_id`) REFERENCES {$playlist_table} (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) $charset_collate;";
dbDelta( $sql );
Это работает само по себе, но если я попытаюсь сделать это на мультисайте, я получаю сообщение об ошибке:
Can't write; duplicate key in table ... for query CREATE TABLE
Это сработает, если я удалю эту строку:
CONSTRAINT `vpl_media_ibfk_1` FOREIGN KEY (`playlist_id`) REFERENCES {$playlist_table} (`id`) ON DELETE CASCADE ON UPDATE CASCADE
Как мне написать эту строку, чтобы у меня не было этой ошибки дублирования ключа?