我有一个查询,它获取条形码的最后一个值并将其递增一。顺便说一句,条形码前缀为PU
。示例是PU1000040
我在PU1000001
SELECT
CONCAT(
LEFT(BARCODE, 2),
MAX(
RIGHT(BARCODE, LENGTH(BARCODE) - 2)* 1
)+ 1
)AS newbarcode
FROM
KGU
WHERE
HW_TYPE = 'STANDARD PURGE UNIT'
这个工作正常并且总是递增1,所以永远不会有重复。然后我意识到,如果我将它放在我的实时服务器中,其中没有数据仍然存在,它将不会返回任何内容,因为没有任何东西可以将它递增一个。所以我提出了这个问题:
SELECT
CASE
WHEN EXISTS(
SELECT
1
FROM
KGU
WHERE
HW_TYPE = 'STANDARD PURGE UNIT'
)THEN
(
SELECT
CONCAT(
LEFT(BARCODE, 2),
MAX(
RIGHT(BARCODE, LENGTH(BARCODE) - 2)* 1
)+ 1
)
FROM
KGU
WHERE
HW_TYPE = 'STANDARD PURGE UNIT'
)
ELSE
'PU1000001'
END AS newbarcode
当我在navicat中运行它时,当没有记录时它确实输出PU1000001
。如果存在,则递增最后一个条形码。但是,在程序中运行时会导致错误。具体在这一行:$new_barcode = $conn_hwcdb->getOne($sql);
我收到的错误说: 致命错误:在第69行的C:\ xampp \ htdocs \ php \ hwcdb \ api \ Database.php中显示消息“数据库错误:未锁定”的未捕获异常“异常”
异常:数据库错误:未在第69行的C:\ xampp \ htdocs \ php \ hwcdb \ api \ Database.php中锁定
function getOne($sql) {
$result = $this->conn->getOne($sql);
if(DB::isError($result)) {
throw new Exception($result->getMessage(), $result->getCode());
}
return $result;
}