我想创建一个具有一个主键和一个唯一键(唯一键,我想用于行顺序)的表。不确定这是否是最好的方法,但是我想要一个包含可以以特定方式排序的歌曲的表,所以我想要一个列(order_id)来控制顺序。
当我尝试创建表时,我得到了这个错误:
表定义不正确;只能有一个auto列,并且必须将其定义为键
CREATE TABLE IF NOT EXISTS `music` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`order_id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
UNIQUE KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;并感谢您的帮助或建议。
发布于 2021-08-30 22:11:09
我只想说2个自动递增的列是不必要的。它们都会包含相同的数字。
UNIQUE将只允许在该列中有一个唯一的值,因此您可以生成一个唯一的id或使用一个唯一的id生成器。
它可能看起来..。
function F_gen_unique_id($tbl, $fld, $max_num = 6){
$tmp = false
while($i < 8 && $ok == false){
$tmp = substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', mt_rand(1,$max_num))), 1, $max_num);
$chk = (int)my_database_class("SELECT * FROM `".$tbl."` WHERE ".$fld." = '".$tmp."'","row_count");
if($chk === 0){
$ok = true;
break;
}
$i++;
}
return $tmp;
}然后使用它..。$my_unique_id = F_gen_unique_id('music', 'order_id', 12);
https://stackoverflow.com/questions/41923653
复制相似问题