MySQL触发器AFTER INSERT以自动递增列

时间:2012-02-15 15:52:18

标签: mysql

我是MySQL和DB的新手,所以请耐心等待:):

我有一个表 - tblfolders,它有一个字段'barcodeID',这是一个INT,每当一个新行插入表中时我需要增加1。我不能把它变成一个自动增量字段,因为我已经有'id'字段自动递增。

我尝试使用AFTER INSERT触发器执行此操作,但我不断收到错误:“无法在存储的函数/触发器中更新表'tblfolders',因为它已被调用此存储函数/触发器的语句使用。”< / p>

有关如何在插入表格中自动增加此字段的任何建议吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果将barcodeId作为具有自动增量主键的条形码表的外键呢?

答案 1 :(得分:0)

<强>更新 使用auto_increment然后使用php格式化它,例如sprintf of printf:

while($row = mysql_fetch_assoc($sql)) {
    $numberOfZerosINeed = 10-strlen($row['id']);
    $formated_id =   sprintf(" %010s ",  $row['id']); // zero-padding works on strings too
    $row['barcode_id']=$formated_id;
    $all_rows[]=$row;
}

在这一点上,好像你有一个带有格式化AUTO_INCREMENT整数的列barcode_id!

OLD ANSWER 您可以使用编程语言执行类似插入后的操作,很难说什么是最好的,您应该描述您想要做什么,如果您使用的是php,为什么auto_increment本身不会为您提供所需的数据?在php中你可以做一些像插入后的东西:

$sql = mysql_query("INSERT INTO tblfolders (id, othervales) VALUES ('{$id}', '{$othervalues}') ");
$last_id = mysql_insert_id();
mysql_query("UPDATE tblfolders SET barcode_id='".($old_barcode_id+1)." WHERE id={$last_id} LIMIT 1 ");