<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大大毛 的筆記

      DDM's Note

    哪怕沒有辦法一定有說法,
    就算沒有鴿子一定有烏鴉,
    固執無罪 夢想有價,
    讓他們驚訝.

    posts - 14, comments - 23, trackbacks - 0, articles - 58
       :: 首頁 ::  :: 聯系 ::  :: 管理

    自行構建 Identity 列的方法

    Posted on 2007-01-15 12:51 大大毛 閱讀(296) 評論(0)  編輯  收藏 所屬分類: SQL

    ???問題
    ??????SQL查詢中經常需要借助於表的 primary key 來實現記錄的唯一性標識,但是有的場合中卻不方便對主鍵進行直接處理,例如我遇到的這種情況:

    create ? table ?A( char ( 500 )?pkCol,col1,col2);

    ??????表A具有PK列,我現在需要在頁面上Show出以 CheckBox 表示的記錄條,類似於郵件列表的選取。
    ??????通常的做法會是利用表A的PK列來形成 頁面元素 的ID,這樣在FORM的Submit中就可以拿到選取的記錄PK值,可以很方便的組織SQL來完成整個篩選邏輯。
    ???????現在的問題是出在這個表A的PK列上,通常表的PK列會利用 Int 類型來建立,這樣建立唯一索引的代價會比較小,用Char來建立PK時的情況也是很多,但是也會保證該列的規則性。可是表A的PK列是建立在一個具有實際含義的Char列上,該列的內容會是用戶手工輸入的結果,可想而知如果用它來構造頁面元素的ID會發生什麼情況:
    ??????? 1.如果該列寬很大的話,當然就會出錯;
    ??????? 2.由於該列內容不會是非常“正規”的內容,很有可能包含一些特殊字符,這樣一定會使瀏覽器在解析頁面時產生歧義。

    ???解決方法
    ???????問題2的情況可以通過對表的PK列進行字符替換等手段來排除掉特殊字符,但是問題1的長度過長依舊不能夠解決。
    ???????我想到的解決該問題的方法是:
    ??????1.對PK列進行字符替換處理這樣可以被保存在 textarea 這樣的元素裡;
    ??????2.而需要提交的元素ID則由我以SQL構造的 Identity 列來構造;
    ??????3.生成頁面的時候只需要建立起提交元素與 textarea 的關聯即可,最終提交的還是PK的值。
    ??????可能有人會對解決方法3提出疑問,既然可以構造 Identity 列,為啥不直接用它來實現提交呢?
    ??????看過實現就知道了:

    ???? Select
    ????????????MyIDCol
    = (
    ????????????????
    Select ? Count ( * )? From ?A?subA? Where ?subA.pkCol = A.pkCol? And ?A.pkCol? < ?subA.pkCol
    ????????????),
    ????????????pkCol,
    ????????????col1,
    ????????????col2
    ????????
    From
    ????????????A

    ??????這裡可以看 Identity 列(MyIDCol) 是構建在唯一查詢的排序結果集上的,因此它在工作時總能夠保證唯一的區分每一行記錄。
    ??????但是需要注意的一點就是這條語句形成的 Identity 是關聯到某一時刻的,換句話說,如果在用戶對記錄進行過 Insert/Delete 操作之後,這個Identity的值與做DML之前的記錄是關聯不上的,因此需要在Select時帶出PK列的值,在提交時使用PK值才能保證數據的正確性。

    ??????當然,改變DB的設計也是可行的,只不過前提是必須在DB的設計階段。

    i am ddm

    主站蜘蛛池模板: 免费女人高潮流视频在线观看| 亚洲国产人成在线观看69网站 | 在线免费观看a级片| 67194成是人免费无码| 2022年亚洲午夜一区二区福利 | 亚洲精品无码av中文字幕| 国产精品亚洲一区二区在线观看| 91在线品视觉盛宴免费| 亚洲国产香蕉人人爽成AV片久久 | 亚洲欧美aⅴ在线资源| 最近2019中文免费字幕| 亚洲av无码乱码国产精品fc2| 亚洲午夜成人精品无码色欲| 永久黄网站色视频免费| 四虎影院免费在线播放| 亚洲精品自偷自拍无码| 免费观看国产精品| 成人午夜免费视频| 亚洲成A∨人片在线观看不卡| 久热免费在线视频| 亚洲精品免费在线| 精品免费久久久久久成人影院| 国产精品久久久久久亚洲小说 | 久久影院亚洲一区| 久久免费国产精品一区二区| 91精品国产亚洲爽啪在线影院| 免费在线看v网址| 免费无码AV一区二区| 久久精品国产亚洲综合色| 黄页网站在线看免费| 春暖花开亚洲性无区一区二区 | 亚洲黄片手机免费观看| 成人av片无码免费天天看| 日韩电影免费在线观看视频| 免费国产黄网站在线看| 亚洲av最新在线网址| 韩国日本好看电影免费看| 99久久免费国产精品热| 国产成人亚洲精品| 黄网站色在线视频免费观看| 久久亚洲精品成人av无码网站|