簡體   English   中英

將字段的默認值設置為auto_increment值

[英]Set default value of field to auto_increment value

我有一個表,其中有一個自動遞增的列id和另一個列ord

我的目標是有一個“默認”值ordid 我正在使用觸發器(請參見下文),但它始終使用0而不是id值。

當我從id刪除auto_increment時,它應能正常工作。 如何將字段的“默認”值設置為auto_increment字段之一?

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

觸發

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

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