我有6列program_id
,a
,b
,c
,d
和e
表(實際上有其他欄目爲好,但目前/問題這是所有是需要的)。還有一個包含以下字段的參考表。 id
,program_id
,a
,b
,c
, d
和e
。使用參考表字段與SQL更新主表
表1:
program_id, a, b, c, d, e
1, , , , ,
2, , , , ,
1, , , , ,
3, , , , ,
表2(REF):
id, program_id, a, b, c, d, e
1, 1, NULL, Y, NULL, Y, NULL
2, 2, Y, NULL, Y, NULL, NULL
3, 4, Y, NULL, Y, NULL, NULL
4, 5, NULL, Y, Y, NULL, Y
以我參考表中的A-E列是開/關或有/無。
我需要發生的是,表1將只允許更新相應的program_id
具有NULL值的字段。所以在program_id 1
的情況下可以這麼說。 column a, c and e
將允許更新,column b and d
不會。
在program_id 2
的情況下columns and and c
將不允許任何更新和column b, d and e
將允許他們。
我有一個觸發器的sql表 - 我正在考慮將該邏輯建立到插入觸發器(雖然我不知道這是否是最好的地方)。
計劃是運行此代碼,每年輸入50個左右的程序到表1中。 (還有一個年份字段可以進一步區分數據)。一旦插入數據,最好的方式是什麼不能更新這些數據,而不是從第三個數據中提取已經計算的值(不同的表格...表格3)。
該數據將通過infoamker/sybase顯示到第三方軟件中。但是最大的挑戰是先把它放到代碼中,然後一旦它出現在那裏,我不允許用戶更新infomaker中的那些字段,只更新NULL。
這是可能的嗎? (以及我該怎麼做)。
謝謝。
嗨,感謝您的幫助,我很難過,並試圖拆除您的解決方案,將其應用到我的項目 - 我很抱歉,聽起來如此密集 - 在您的開始塊選擇語句 - 什麼是選擇來自程序的'ColLock'。我必須爲每列(a-e)選擇一個語句嗎?或者ColLock在這種情況下究竟是什麼?再次感謝你! – Elizabeth
嗨,這很好,我的錯,我只是重構了程序表,以便像在ColLock中一樣返回一個布爾值(「列鎖定」)。使用合適的ColLock值爲程序表中的每個程序/列對定義一行。然後對每個列執行一次「ADD CONSTRAINT」。正如我之前提到的那樣,如果您也可以從前端調用該函數並鎖定UI中的字段,那將會很好。 – MikeAinOz
我希望回答你的問題,用戶定義的「CheckColumn」函數是所有這一切的關鍵,你可能想要稱之爲「udfCheckColumn」更獨特的東西。我已經寫了所有東西,記得函數只返回一個值。 – MikeAinOz