0

所以对我们的系统有一点背景来解释事情。

我们的数据库是版本(可能大多数都是)。我们在数据库中有一个名为“DBVersion”的表。然而几个月前,我们迁移到了 liquibase。现在有一个 DATABASECHANGELOG 表。

不幸的是,就我们的数据库而言,我们是一家相当无组织的公司。所以我正在尝试编写一个视图,让我知道我们的客户使用的是什么版本。

老实说,我什至不知道从哪里开始。但我想我可以编写多个 CASE 语句来允许我这样做。我将使用 SP sp_msforeachdb 来运行视图。

SELECT 
Case when id = '8.12' then '8.12'
End as Version
From DATABASECHANGELOG
Where id = '8.12'

我想做这样的事情:

CASE 
    WHEN (SELECT ID FROM DATABASECHANGELOG WHERE ID = '8.12' IF NULL CONTINUE)
    WHEN (SELECT VERSION FROM DBVERSION, IF > 400 && < 425 THEN PRINT 'VERSION 8.7'

我知道上面的查询甚至不是在 SQL 中,但它给了你一个想法。我们的 Liquibase 版本是 8.10、8.11 和 8.12 以及所有未来版本。低于 8.10 的所有内容都使用 watson 版本,这将是一个简单的数字范围。

对不起,如果这太令人困惑了。

4

1 回答 1

0

不是很明白你的问题。

以下 SQL 显示应用程序的数据库版本:

SELECT ID,FILENAME,TAG  FROM DATABASECHANGELOG WHERE TAG IS NOT NULL

每次运行“tag”命令时,它都会在 tag 列中插入一个值,以便回滚操作知道要撤消多少变更集。

于 2012-12-04T22:03:06.057 回答