首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MySQL触发器自动递增值

使用MySQL触发器自动递增值
EN

Stack Overflow用户
提问于 2017-12-30 03:16:09
回答 1查看 1.8K关注 0票数 0

我一直在尝试在一个表中设置一个基于向我的表中插入数据的自动递增,

在这被标记为重复之前,我已经看过其他问题了,我认为我的主要问题是对触发器的语法的误解,特别是这一行:

代码语言:javascript
复制
WHERE ID = NEW.ID;

MySQL块:

代码语言:javascript
复制
CREATE TABLE Members(
    ID  INT  UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,
    FIRST_NAME  TEXT(16),
    LAST_NAME  TEXT(16),
    TITLE  TEXT(7), /** 7 CHARS for  'Student'*/
    INSTITUTION  VARCHAR(2048),
    No_Publications INT NOT NULL,
    PRIMARY KEY(ID)
  );
CREATE TABLE Papers(
    ISBN  INT UNSIGNED NOT NULL UNIQUE,
    Title  TEXT(4),
    Publish_Date  DATE NOT NULL,
    Topic  TEXT(128),
    PRIMARY KEY(ISBN)
  );
  CREATE TABLE Publications(
    Researcher_ID  INT  UNSIGNED NOT NULL UNIQUE,
    ISBN  INT UNSIGNED NOT NULL UNIQUE,
    PRIMARY KEY (Researcher_ID, ISBN),
    FOREIGN KEY(Researcher_ID) REFERENCES Members(ID) ON DELETE RESTRICT ON UPDATE CASCADE,
    FOREIGN KEY(ISBN) REFERENCES Papers(ISBN) ON DELETE RESTRICT ON UPDATE CASCADE /**Used in
    many to many relations*/
  );

  CREATE TRIGGER New_Publication AFTER INSERT ON Publications
  FOR EACH ROW
  BEGIN
  UPDATE Members SET No_Publications = No_Publications + 1 WHERE ID = NEW.ID;
  END;

编辑:在插入到Publications表中时,我希望Members表中的No_Publication列递增1

EN

回答 1

Stack Overflow用户

发布于 2017-12-30 04:46:12

publications表中没有id字段,因此不能有任何NEW.ID。您一定在mysql中收到了未知字段错误。publications的create table语句包含有关在更新中使用哪个字段的线索:

代码语言:javascript
复制
FOREIGN KEY(Researcher_ID) REFERENCES Members(ID)

因此,更新应如下所示:

代码语言:javascript
复制
UPDATE Members SET No_Publications = No_Publications + 1 WHERE ID = NEW.Researcher_ID

此外,不需要使用begin ... end,因为触发器主体由一条sql语句组成:

代码语言:javascript
复制
CREATE TRIGGER New_Publication AFTER INSERT ON Publications
  FOR EACH ROW
  UPDATE Members SET No_Publications = No_Publications + 1 WHERE ID = NEW.Researcher_ID;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48027346

复制
相关文章

相似问题

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