mysql创建序列

mysql创建序列

这里我要做的事情,创建mysql序列,然后在某个表中的一个字段的默认值为序列的模。
注意:我当时使用的是mariadb,版本不够高不支持创建序列。

创建序列,意思是序列的开始为1,下一个数值+1

CREATE SEQUENCE {序列名} START WITH 1 INCREMENT BY 1 CYCLE;

改变表结构,在原来的基础上修改默认值,默认值为序列的模。

ALTER TABLE {表名} ALTER COLUMN {字段名} SET DEFAULT (MOD(nextval(`{序列名}`),2));

示例:

CREATE SEQUENCE test_seq START WITH 1 INCREMENT BY 1 CYCLE;
ALTER TABLE test_mod ALTER COLUMN b SET DEFAULT (MOD(nextval(`test_seq`),2));

当然你也可以不用这样子修改表结构,在创建table的时候在字段上直接设置默认值就行了。

后来,我在备份好数据库之后导入数据库到另一台主机上,出现了问题。
这是报错信息:
ERROR 1100 (HY000) at line 2598: Table ‘seq_worker_id’ was not locked with LOCK TABLES
意思是在2598行,我的seq_worker_id没有和表一起锁住,因为seq_worker_id是我创建的序列,与表(SDTX_PICTURE)关联在一起了。

找到2598行

LOCK TABLES SDTX_PICTURE WRITE;
改成就行了
LOCK TABLES SDTX_PICTURE WRITE, seq_worker_id WRITE;

如果你是linux系统,而且文件太大了。可以用sed修改,具体怎么修改百度一下就知道了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值