2

嗨,提前感谢。我想知道为什么在创建新视图后我的代码发生了更改,这发生在两个不同的 IDE、Server Studio 和 RazorSQL 上,这是一个示例。

原始代码:

SELECT T_USER.ID IDUSER, T_DEP.DESCRIPTION DEPARTMENT

FROM TABLE1 T_USER
INNER JOIN TABLE2 T_DEP ON TABLE2.ID = TABLE1.ID

创建视图后

DROP
    VIEW orales:vw_test;
CREATE
    view "owner".vw_test (id, description) as
SELECT
        x0.id   
        x1.description ,

FROM
    ("owner".table1 x0 JOIN "owner".table2 x1
        ON
        ((x1.id = x0.id)));

我想知道如何防止编译器或其他东西覆盖我的表别名的名称和我的内部连接的子句。

再次感谢你 :)

4

1 回答 1

2

您无法阻止这种行为。

实际上,所有数据库都这样做。您的原始查询被解析为抽象语法树,该树以专有格式存储在数据库中。

您所看到的是将该 AST 呈现为有效的 SQL 语句。

您的原始查询早已不复存在。


您不应该依赖数据库来“管理”查询的来源。您的原始查询是“代码”,应该由版本控制系统管理,就像项目中的所有其他代码一样。这样做意味着您的查询在数据库中的内部表示是无关紧要的,并且当然可以为您提供 VCS 的所有其他好处。

于 2013-02-23T00:50:50.280 回答