Date: Sat, 06 Mar 2004 23:39:39 +0900
From: hermit <who@sub.example.com>
hermit です
Sat, 6 Mar 2004 17:40:11 +0900
Akira Horikawa さんの「[ml-msde:01261] RE: CURRENT OF が失敗」
についての返信です。
藤沢さんのプログラムと堀川さんのプログラムの違いは、
ORDER BY があるかないか、ですね。
堀川さんのプログラムを
------------------------------------------------
DECLARE curAddFrom CURSOR FOR
SELECT * FROM #TmpTable ORDER BY strUserID
^^^^^^^^^^^^^^^^^^
------------------------------------------------
として実行したところ、エラーになりました。
その上でこんどは、CREATE TABLE のあとに
------------------------------------------------
ALTER TABLE #TmpTable ADD
CONSTRAINT PK_strUserID PRIMARY KEY
(
strUserID
)
------------------------------------------------
を付けてみたところ、エラーにはなりませんでした。
PRIMARY KEY ではなく、
------------------------------------------------
ALTER TABLE #TmpTable ADD
CONSTRAINT IX_strUserID UNIQUE
(
strUserID
)
-----------------------------------------------
でもOKです。
この結果でわかったことは、
「ユニークなキーを持たない表は、ORDER BY を付けると読み取り専用のカーソ
ルになる」
別な言い方をすると、
「ユニークなキーを持たない表を CURRENT OF で 更新したい場合は ORDER BY
を使わない」
ですね。
実際、パーマネントな表は一般的に PRIMARY KEY を持ちますし、テンポラリな
表に CURRENT OF で更新をかけようとする場合はあまり並べ替えたりしないです
けどね。
ではまた。
--
hermit mailto:who@sub.example.com
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|