JobID は次のようになります: ALC-YYYYMMDD-001。最初の 3 つは会社のイニシャルで、最後の 3 つは増加する数字で、毎日リセットされ、1 日に最大 999 件のジョブが追加されると 1 日を通して増加します。私が作業しようとしているのは、これらの最後の 3 つです。
挿入前のトリガーを取得して、その日の最大 JobID を検索し、それを追加して、トリガーが適切な JobID を取得できるようにしようとしています。最初のジョブでは、もちろん null が返されます。だからここに私がこれまで持っているものがあります。
以下により、「000」の結果を得ることができます。
set @maxjobID =
(select SUBSTRING(
(Select MAX(
SUBSTRING((Select JobID FROM jobs WHERE SUBSTRING(JobID,5,8)=date_format(curdate(), '%Y%m%d')),4,12)
)
),14,3)
);
select lpad((select ifnull(@maxjobID,0)),3,'0')
しかし、その日の最初のジョブと後続のジョブをインクリメントするために、先行ゼロを維持しながら、これに 1 を追加する必要があります。私の問題は、「1」を追加しようとするとすぐに「BLOB」が返されることです。あれは:
select lpad((select ifnull(@maxjobID,0)+1),3,'0')
「BLOB」を返します
「001」を返す必要があるため、その結果を CO のイニシャルと現在の日付と連結できます。