在脚本末尾使用 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):尝试尽可能干净地执行测试,不使用任何其他测试代码。这可能会干扰预期结果。
我需要编写一些 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):尝试尽可能干净地执行测试,不使用任何其他测试代码。这可能会干扰预期结果。