-3

編集

結果が構文的には異なるが意味的には同一であることを示すのは 2 行目です。私の質問は、これが標準の SQL Server Generate スクリプトを使用した結果である理由です。
以下は、スクリプトを生成したデータベースの 2 つの異なるコピーからのものです。どちらも同じトリガーからのものです。繰り返しになりますが、なぜこれがスクリプトの自動生成に起因するのか、またはこれは不可能/ありそうもないことであり、手動による介入、つまり意図的なトリガー/スクリプトの編集を直接指しているのかという問題です。

以前に前提をより適切に説明しなかったことを心からお詫び申し上げます。

クライアントでエラーを突き止めようとしていて、スキーマのコピー、トリガープロシージャなどを取得しました。

場合によっては、まったく同じ結果が得られる構文上の違いを見つけています。

BEGIN
    UPDATE cd_units
        SET shift_expired_status = 0
    FROM inserted
    WHERE inserted.shift_start >= dbo.get_dts()
        AND inserted.unid = cd_units.unid
END

VS

BEGIN
    UPDATE cd_units
        SET shift_expired_status = 0
FROM inserted
WHERE inserted.unid = cd_units.unid
    AND inserted.shift_start >= dbo.get_dts();
END

ご覧のとおり、最終結果は同じですが、機能的には同じです。

誰かが私とビリーサガーをしている場合を除き、これはすべきではありませんよね? しかし、これはすでにこの問題のより深い調査を保証しています。

4

2 に答える 2

1

質問を完全に理解しているかどうかわからないので、答えるのをためらっていますが、2 つのクエリについて混乱しているようです。

空白の違い (クエリにはまったく影響しません) を除けば、2 つのクエリは意味的に同一です。WHERE唯一の違いは、句内の条件の順序です。条件自体は同じなので、同じ結果が得られます。

于 2013-08-14T18:52:33.963 に答える