关闭

AutoInc、Default與BatchUpdate

954人阅读 评论(0) 收藏 举报

C/S架構中,數據庫設計時我們喜歡用AutoIncinteger字段作為OID,也喜歡在數据庫設置一些Default值,實踐證明這個是沒有問題的。

但是在3-Tier(使用TClientDataSet或者說BatchUpdate模式下,因爲這些資料必須在提交后DBMS產生,所以會有一些問題困擾我們

1.         Master-Detail,新增了Master記錄后,爲了保證資料完整性,需要主從同時在一個Transaction保存,所以主表還沒有保存時再新增Detail資料,Detail的外鍵填什麽?

2.         提交資料后,如果沒有看到DBMS產生的AutoIncDefault資料,是否要MergeRequery?這個動作會使客戶端畫面閃動嗎?儅前記錄跳開嗎?

我的建議是不要在數据庫定義這些東西,就像越來越多的人不會在數据庫定義表的關聯一樣。OID用遞增的OID元件自己處理(一定要數據庫鎖),每次新增就獲得一個新的號碼。至於Default,提交前按設計文檔填滿,當然也可以連同Constraint做成數據字典統一管理,統一處理。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:290875次
    • 积分:5028
    • 等级:
    • 排名:第5901名
    • 原创:150篇
    • 转载:46篇
    • 译文:0篇
    • 评论:77条
    最新评论