資料庫更新 SQL
判斷新增或修改
SELECT COUNT(1) FROM ITEM WHERE ID = N'{item_no}'
-- count > 0 → UPDATE, count = 0 → INSERT
INSERT(新增品號)
INSERT INTO ITEM (
ID, NAME, DESCRIPTION, UNIT, RELEASEUNIT,
STDROUTEITEMID, STDROUTEID, ITEM001, ITEM002,
ITEM004, ITEM005, CONVERTUNIT,
LASTMAINTAINUSER, LASTMAINTAINDATETIME, FLAG
) VALUES (
:ID, :NAME, :DESCRIPTION, :UNIT, :UNIT,
:STDROUTEITEMID, :STDROUTEID, :ITEM001, :ITEM002,
:ITEM004, :ITEM005, :CONVERTUNIT,
:userid, N'{當前時間}', 0
)
UPDATE(修改品號)
UPDATE ITEM SET
NAME = :NAME,
DESCRIPTION = :DESCRIPTION,
UNIT = :UNIT,
RELEASEUNIT = :UNIT,
STDROUTEITEMID = CASE WHEN STDROUTEITEMID IS NULL OR STDROUTEITEMID = ''
THEN :STDROUTEITEMID ELSE STDROUTEITEMID END,
STDROUTEID = CASE WHEN STDROUTEID IS NULL OR STDROUTEID = ''
THEN :STDROUTEID ELSE STDROUTEID END,
ITEM001 = :ITEM001,
ITEM002 = :ITEM002,
ITEM004 = :ITEM004,
ITEM005 = :ITEM005,
CONVERTUNIT = :CONVERTUNIT,
LASTMAINTAINUSER = :userid,
LASTMAINTAINDATETIME = N'{當前時間}',
FLAG = (SELECT MAX(FLAG)+1 FROM ITEM WHERE ID = :ID)
WHERE ID = :ID
欄位預設值
新增時若欄位為空,自動帶入以下預設值:
• ITEM001 = '' (空字串)
• ITEM002 = 'N'
• ITEM004 = 1 (換算率分子)
• ITEM005 = 1 (換算率分母)
material_catalog 表(item_sort = "M")
判斷新增或修改
SELECT COUNT(1) FROM material_catalog WITH (NOLOCK)
WHERE material_id = N'{item_no}'
-- count > 0 → UPDATE, count = 0 → INSERT
INSERT(新增物料)
INSERT INTO material_catalog (
material_id, material_name, norm, unit_no,
oper_date, oper_id, ENABLED, MODI_DATE
) VALUES (
:ID, -- 品號 (item_no)
:NAME, -- 品名 (item_name)
:DESCRIPTION, -- 規格 (item_spec)
:UNIT, -- 單位 (unit_no)
N'{當前時間}',
:userid,
:ENABLED, -- Y/N (tran_status: AU→Y, D→N)
N'{當前時間}'
)
UPDATE(修改物料)
UPDATE material_catalog SET
material_name = :NAME,
norm = :DESCRIPTION,
unit_no = :UNIT,
ENABLED = :ENABLED,
MODI_DATE = N'{當前時間}'
WHERE material_id = :ID
material_catalog 欄位對應
material_id | ← item_no | 品號(主鍵) |
material_name | ← item_name | 品名 |
norm | ← item_spec | 規格 |
unit_no | ← unit_no | 單位 |
ENABLED | ← tran_status | 啟用狀態 (AU→Y, D→N) |