行式填報之主鍵設定

bubblegum發表於2019-12-18

填報功能是報表工具不可或缺的功能之一,此功能可以讓使用者在頁面中進行資料維護操作。特別是在行式填報中,使用者不僅可以修改資料,而且可以插入 / 新增新資料或刪除已有資料。這樣,在更新行式填報頁面中的資料記錄時,主鍵欄位就會涉及 insert 和 delete 操作,而對於不同型別的主鍵我們應該如何進行更新設定?有哪些方面是需要我們注意的呢?下面我們將以僱員資訊表的維護為例探討一下主鍵設定的相關內容。

附 Employee 表結構:

imagepng

先準備一張行式填報表,製作效果如下圖所示:

imagepng

(行式填報表快速製作教程參見 )

來源指令碼設定:

imagepng

重點來啦 ~~ 去向指令碼中不同的主鍵型別應該如何配置呢?我們來逐個攻破:

1. 單主鍵

Employee 表的主鍵為 empno,那麼指令碼中的 update 函式配置為:

A1.update@k(employee:employee_old,employee,empno,ename,salary,sex;empno)

在英文分號後面配置主鍵 empno,報表在做更新處理時,會以 empno 為主鍵對比 employee 和 employee_old 物件的資料,然後將差異資料更新到表 employee 中。

完整版指令碼內容如下圖所示:

imagepng

2. 多主鍵

       一般情況下,物理表只設定一個主鍵欄位就可以將資料記錄區分開來,特殊情況下會設定兩個及以上主鍵欄位,例如上述 employee 表我們可以透過 empno 欄位來區分資料記錄,也可以透過 ename+sex 兩個欄位來鎖定唯一一條符合條件的記錄,此時我們的指令碼中應該如何設定主鍵呢?

很簡單,只需要用英文逗號隔開多個主鍵欄位就可以了:

A1.update@k(employee:employee_old,employee,empno,ename,salary,sex;ename,sex)

完整版指令碼內容如下圖所示:

imagepng

3. 自增主鍵

自增主鍵可以提升查詢效率、節省磁碟空間,在填報中也有廣泛應用。以 mysql 設定為例:可以透過第三方工具(如 Navicat)或者 sql 語句設定某個主鍵欄位的資料自動增長。

       在資料庫端很容易配置主鍵欄位的自動增長,那麼在潤乾報表中如何實現自動增長欄位的資料更新呢?很簡單,只需要新增一個 @1 選項就搞定了。

A1.update@1k(employee:employee_old,employee,empno,ename,salary,sex;empno)

其中,@1 選項表示第一個欄位是自增欄位,沒有對應更新值表示式

注意:這裡是數字 1 而不是字母 l

完整版指令碼內容如下圖所示:

imagepng

4. “動態”主鍵

       “動態”主鍵我們理解成通常說的 UUID,表示主鍵的值是一個不重複的隨機數,這種方式比自動增長方式更安全、重複率更低。

        我們以 mysql 資料庫為例,將隨機生成的四位數字作為主鍵 empno 的資料,並將資料更新入庫。在潤乾報表中只需要多一步 run 操作給主鍵欄位賦值,剩下的和常規更新配置一樣。

       =employee.run(if(empno==null,~.empno=A1.query(“select round(round(rand(),4)*10000) as xuhao”).xuhao))  // 當 employee 物件中的主鍵 empno 欄位為空的時候,我們將隨機生成的四位數字賦值給主鍵欄位

(這裡為什麼條件是判斷為空呢?因為一般自增主鍵或者 UUID 主鍵都不允許編輯或者直接設定使用者不可見,所以此時新增的記錄中主鍵欄位為空。)

完整版指令碼內容如下圖所示:

imagepng

至此,我們已經將幾種常見主鍵設定方式探討完畢,現在回過頭來看填報資料處理中的主鍵設定,是不是有種“wow~~amazing~”的感覺?

如果您在填報學習過程中有任何疑問,歡迎留言,我們一起來盤它!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2669212/,如需轉載,請註明出處,否則將追究法律責任。

相關文章