【发布时间】:2021-04-10 00:26:20
【问题描述】:
我有一个 sql 表,我在一列中存储了一个 json 编码值。现在我想为该列的一个值设置唯一约束。有可能吗?
@AlexCollette
select version();
5.7.32-cll-lve
CREATE TABLE `sale` (
`sale_id` int(11) NOT NULL AUTO_INCREMENT,
`sale_code` longtext,
`buyer` longtext,
`guest_id` varchar(100) DEFAULT NULL,
`product_details` longtext,
`shipping_address` longtext,
`vat` longtext,
`vat_percent` varchar(10) DEFAULT NULL,
`shipping` longtext,
`payment_type` varchar(100) DEFAULT NULL,
`payment_status` longtext,
`payment_details` longtext,
`payment_timestamp` longtext,
`grand_total` longtext,
`sale_datetime` longtext,
`delivary_datetime` longtext,
`delivery_status` longtext,
`viewed` longtext,
`verify_payment_details` longtext NOT NULL,
PRIMARY KEY (`sale_id`)
) ENGINE=MyISAM AUTO_INCREMENT=344 DEFAULT CHARSET=utf8
【问题讨论】:
-
您能否进一步详细说明:“现在我想为该列的其中一个值设置唯一约束”
-
json 值是否始终具有相同的格式?
-
不完全是,如果您使用的 JSON 不是数据库中的本机数据类型,那么对它们设置任何约束都不是明智之举。但我确实缺乏这种问题的经验。
-
select version();显示什么?说出你想要的实际约束是什么。显示show create table yourmysterytablename的输出(请作为文本,而不是图像) -
您可能希望重新设计该表架构并将该特定值 (
mihpayid) 考虑为单独的列 - 您不能仅通过每条记录中的一小段数据将列设置为唯一。
标签: php mysql sql json codeigniter