在脚本末尾使用 ROLLBACK 来测试 SQL 脚本是个好主意吗?

Is it a good idea to test SQL scripts by using ROLLBACK at the end of a script?

我需要编写一些 SQL 更新脚本来添加表、重命名列等。我将所有内容都放在一个事务中:

IF EXISTS (/* check version */)
BEGIN
    -- print cannot apply update
END
ELSE
BEGIN
    BEGIN TRANSACTION

        -- apply updates

    ROLLBACK
    --COMMIT
END

现在,如果我 ROLLBACK 更新而不是 COMMIT 它们,我可以假设稍后当我将其更改回 COMMIT 时它会起作用吗?我还不想将它应用到我的开发数据库,​​但可以按 F5 并检查是否一切正常。

没有, 如果你想测试,你必须确定你的数据库的状态。 最好写一个小脚本,它会删除你的 tables/complete 数据库并编写一些 SQL 来创建数据库、表并添加测试 data.Then 你可以做一个真正的测试, SQL 你真的会使用,而不是任意使用(不同于真正的 SQL 使用)SQL 并想知道你的测试代码是否有任何站点效应。

SSV(short-short-version):尝试尽可能干净地执行测试,不使用任何其他测试代码。这可能会干扰预期结果。