简体   繁体   English

将字段的默认值设置为auto_increment值

[英]Set default value of field to auto_increment value

I have a table where I have an auto increment column id and another column ord . 我有一个表,其中有一个自动递增的列id和另一个列ord

My goal is to have a 'default' value for ord that is id . 我的目标是有一个“默认”值ordid I am using a trigger (see below), but it always uses 0 instead of the id value. 我正在使用触发器(请参见下文),但它始终使用0而不是id值。

When I remove the auto_increment from id , it works as it should. 当我从id删除auto_increment时,它应能正常工作。 How can I set the 'default' value of a field to the one of an auto_increment field? 如何将字段的“默认”值设置为auto_increment字段之一?

Table

CREATE TABLE IF NOT EXISTS `mytable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ord` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

Trigger 触发

CREATE TRIGGER `ord_ai` BEFORE INSERT ON `mytable`
 FOR EACH ROW IF NEW.ord IS NULL THEN
    SET NEW.ord := NEW.id;
END IF

Read the next AUTO_INCREMENT value of the id field from INFORMATION_SCHMEA.TABLES and use it for ord field. INFORMATION_SCHMEA.TABLES读取id字段的下一个AUTO_INCREMENT值,并将其用于ord字段。

delimiter //

drop trigger if exists ord_ai //

CREATE TRIGGER `ord_ai` BEFORE INSERT ON `mytable`
FOR EACH ROW 
BEGIN
  IF NEW.ord IS NULL THEN
    SET NEW.ord := ( SELECT AUTO_INCREMENT 
                       FROM INFORMATION_SCHEMA.TABLES
                      WHERE TABLE_NAME = 'mytable'
                        AND TABLE_SCHEMA = DATABASE() );
  END IF;
END;
//

delimiter ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM