首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYsqli create table主键和唯一键自动递增

MYsqli create table主键和唯一键自动递增
EN

Stack Overflow用户
提问于 2017-01-30 01:12:14
回答 1查看 336关注 0票数 2

我想创建一个具有一个主键和一个唯一键(唯一键,我想用于行顺序)的表。不确定这是否是最好的方法,但是我想要一个包含可以以特定方式排序的歌曲的表,所以我想要一个列(order_id)来控制顺序。

当我尝试创建表时,我得到了这个错误:

表定义不正确;只能有一个auto列,并且必须将其定义为键

代码语言:javascript
复制
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;

并感谢您的帮助或建议。

EN

回答 1

Stack Overflow用户

发布于 2021-08-30 22:11:09

我只想说2个自动递增的列是不必要的。它们都会包含相同的数字。

UNIQUE将只允许在该列中有一个唯一的值,因此您可以生成一个唯一的id或使用一个唯一的id生成器。

它可能看起来..。

代码语言:javascript
复制
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);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41923653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档