Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL基于另一个值输入语句的触发器代码_Mysql - Fatal编程技术网

MySQL基于另一个值输入语句的触发器代码

MySQL基于另一个值输入语句的触发器代码,mysql,Mysql,编辑********** 我无法让下面的代码正常工作,所以我尝试在Workbench上的图表工具中运行它。这是我的密码 CREATE DEFINER = CURRENT_USER TRIGGER `MeasureUp_Data`.`bmd_results_BEFORE_INSERT` BEFORE INSERT ON `bmd_l_arm` FOR EACH ROW BEGIN INSERT INTO bmd_results VALUES ( new.bmd_l_arm_typ CASE ne

编辑**********

我无法让下面的代码正常工作,所以我尝试在Workbench上的图表工具中运行它。这是我的密码

CREATE DEFINER = CURRENT_USER TRIGGER `MeasureUp_Data`.`bmd_results_BEFORE_INSERT` BEFORE INSERT ON `bmd_l_arm` FOR EACH ROW
BEGIN
INSERT INTO bmd_results VALUES ( new.bmd_l_arm_typ 
CASE new.l_arm_tscore
    WHEN < -2.5 THEN 'osteoporosis'
    WHEN > -2.4 < -1.0 THEN 'osteopenia'
    WHEN > -1.0 THEN 'normal'
    ELSE NULL
    END); 
END
下表列出了数值结果。基本上是
spine\u total\u bmd
的值是
X
,然后
Y
将插入
bmd\u sp\u type
,或者,如果
spine\u total\u bmd
A
则插入
B

CREATE TABLE IF NOT EXISTS `MeasureUp_Data`.`bmd_spine` (
  `access_no` INT NOT NULL,
  `spine_total_bmd` INT NULL,
  `spine_total_tscore` INT NULL,
  `spine_total_zscore` INT NULL,
  `spine_total_peakref` INT NULL,
  `spine_total_agemat` INT NULL,
  PRIMARY KEY (`access_no`),
  CONSTRAINT `fk_bmd_spine_access`
    FOREIGN KEY (`access_no`)
    REFERENCES `MeasureUp_Data`.`bmd_results` (`access_no`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

我们将非常感谢您对此编码noob的任何帮助

您可以编写插入触发器-

CREATE TRIGGER trigger
    BEFORE INSERT
    ON bmd_spine
    FOR EACH ROW
BEGIN
  INSERT INTO bmd_results VALUES (
    new.access_no,
    CASE new.spine_total_bmd
      WHEN 1 THEN 'y'
      WHEN 2 THEN 'b'
      ELSE NULL
     END);
END
此外,您可以从表中选择数据并动态更改值,而不存储重复的值。这里是一个例子-

SELECT
  access_no,
  CASE spine_total_bmd
    WHEN 1 THEN 'y'
    WHEN 2 THEN 'b'
    ELSE NULL
  END
FROM
  bmd_spine;

谢谢你的快速回复。只是为了澄清我是否需要当1然后“y”在两个值之间时,我可以使用between运算符,还是将其记为当>-2.5然后“y”当-1.5然后“b”等。看看这个主题-。我相信这将有助于澄清这个问题。
SELECT
  access_no,
  CASE spine_total_bmd
    WHEN 1 THEN 'y'
    WHEN 2 THEN 'b'
    ELSE NULL
  END
FROM
  bmd_spine;