首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在插入新ID之前设置MySQL触发器是否安全?

在插入新ID之前设置MySQL触发器是否安全?
EN

Database Administration用户
提问于 2017-09-28 13:20:35
回答 1查看 4.4K关注 0票数 1

如何在MySQL中创建自定义主键?例如我有表,表名是X,我有一个表字段IDCodeName

我担心如果我有1000个用户,当他们一起输入时,就会造成破坏。

我想:

代码语言:javascript
复制
INSERT INTO `X` (`ID`,`Code`,`Name`) VALUES 
('P3K','Alex'), // this primary key is "P3K-1"
('SOS','Force'), // this primary key is "SOS-1"
('P3K','Bash'), // this primary key is "P3K-2"

现在,我对此使用触发器(插入前),如下所示:

代码语言:javascript
复制
SET NEW.`ID` = CONCAT(NEW.`Code`,'-',IFNULL(SUBSTRING_INDEX((
  SELECT `x`.`Code` FROM `X` WHERE 
    X.`Code` = NEW.`Code` and 
ORDER BY X.`Code` DESC
LIMIT 1 ),'-',-1),0) + 1))

我没有尝试这段代码,但我的重点是:

  1. 用户插入
  2. 在插入I之前检查最后一级
  3. 如果是零,则设置为0,否则我会剪切符号(-)并取最后一部分。
  4. I增量(使用+1)
  5. 最后,我连接CODE和Number。

我是不是被误导了?LOL,如果是真的,如何创建这样的一个?(我想)我们可以做到这一点,也许没人知道这一点,MySQL中的人工智能是如何工作得如此完美?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-09-28 14:53:23

不要使auto_increment成为您想要显式操作的任何列。这可能会混淆发动机和造成严重的问题。如果没有用于主键的列是auto_increment,则可以通过触发器对它们执行任何您想要的操作。如果生成的值违反主键的强制唯一性,则将拒绝它们。

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

https://dba.stackexchange.com/questions/187162

复制
相关文章

相似问题

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