在json列上创建唯一索引

时间:2018-04-20 10:09:52

标签: mysql json indexing unique

如何在mysql中的json类型列上创建唯一索引?例如,我有slug属性的翻译列。我需要在translations column image

语言中使用独特的slu ..

CREATE TABLE `posts` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(10) unsigned NOT NULL, `root_id` int(10) unsigned NOT NULL, `translations` longtext COLLATE utf8mb4_unicode_ci NOT NULL, `published_from` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `published_till` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `display_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `images` longtext COLLATE utf8mb4_unicode_ci, `deleted_at` timestamp NULL DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `posts_user_id_foreign` (`user_id`), KEY `posts_root_id_foreign` (`root_id`), CONSTRAINT `posts_root_id_foreign` FOREIGN KEY (`root_id`) REFERENCES `roots` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `posts_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `admins` (`id`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

1 个答案:

答案 0 :(得分:0)

JSON不能替代RDBMS的功能。

在插入行时,提取" slug属性"并将其放入一个声明为UNIQUE的单独列中。虽然它需要更多的工作,但从长远来看它会更清洁,更有效。

同样经常需要过滤或排序的任何其他列。 (不要对所有专栏都这样做。)