0

ODBC テーブルにリンクされたテーブルがあります。ODBC データベース名は CUSTOMER_USER です。テーブルの名前は CUSTOMER_INFO です。パススルーを使用して、ODBC リンク テーブル「CUSTOMER_USER_CUSTOMER_INFO」のすべてのレコードを削除する必要があります。これらのレコードの日付が異なる場合現在の日付から。次のコードを試し、[クエリ デザイン] タブで [パススルー] を選択しましたが、常にエラー メッセージが返されます

DELETE CUSTOMER_USER_CUSTOMER_INFO.*
FROM CUSTOMER_USER.CUSTOMER_INFO
WHERE SUBMIT_DT <> NOW()

私も試しました

DELETE CUSTOMER_USER.CUSTOMER_INFO.*
FROM CUSTOMER_USER.CUSTOMER_INFO
WHERE SUBMIT_DT <> NOW()

また

DELETE CUSTOMER_USER_CUSTOMER_INFO.*
FROM CUSTOMER_USER_CUSTOMER_INFO
WHERE SUBMIT_DT <> NOW()

あるいは

DELETE CUSTOMER_USER.CUSTOMER_INFO.*
FROM CUSTOMER_USER.CUSTOMER_INFO

上記のいずれも機能しません

4

2 に答える 2

0

これは古いスレッドであることは知っていますが、この問題もありました。注意すべきことの 1 つは、削除元のテーブルとの SQL Server 上の 1 対多の関係です。定義された 1 対多の関係があり、関係の 1 側から削除しようとしている場合、SQL サーバーは参照整合性を維持し、多側に関連するレコードがある場合、1 側からの削除を許可しません。関係。

もう 1 つ注意が必要なのは、これらの関係がどこにあるのかすぐにはわからないことです。SQL サーバーのリレーションシップ ボタンを調べることができますが、片側のテーブルの DELETE トリガーにも問題がある可能性があります。そのため、チェックする場所がいくつかあります。DELETE トリガーを変更するか、Many 側のレコードを手動で削除してから 1 側のレコードを削除する必要があります。幸運を。

于 2014-11-25T20:28:30.093 に答える
0

これを試して?NULL フィルターも含まれています。NOW() は問題になる可能性があります。DATE() はすべきではありません。ただし、DATEVALUE は JET 関数であるため、パススルーを遮断する必要がある場合があります。

DELETE
FROM CUSTOMER_USER_CUSTOMER_INFO
WHERE DATEVALUE(SUBMIT_DT) <> DATE()
    AND SUBMIT_DT IS NOT NULL;
于 2014-04-24T02:03:41.063 に答える