为什么Informix数据库在创建视图后更改我的原始SQL代码?

时间:2013-02-22 23:09:00

标签: database informix

嗨,谢谢你。 我想知道为什么我的代码在创建新视图后发生了变化,这发生在两个不同的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)));

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

再次感谢你:)

1 个答案:

答案 0 :(得分:2)

您无法阻止此行为。

实际上,所有数据库都是这样做的。您的原始查询被解析为abstract syntax tree,它以专有格式存储在数据库中。

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

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


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