我有一个数据库视图,它从两个具有相同名称的不同表中选择两列。
例如,为视图生成DDL将生成以下内容:
create view MYSCHEMA.VPRODUCTS ("Name", "AlternameName"...) AS
A.Name,
B.Name,
from PRODUCTSA A
left join PRODUCTSB B
...
当我运行命令生成Liquibase更改集时,标记中的SQL仅包含两列的select语句,并且不区分唯一列名称(即“Name”,“AlternameName”)。< / p>
<createView viewName="VPRODUCTS ">SELECT
A.Name
,B.Name
from PRODUCTSA A
left join PRODUCTSB B
...
因此,每当我尝试执行更改集时,Liquibase都会抱怨具有相同名称的列的重复条目。
我可以通过在标记中添加SQL“AS”语句来解决这个问题,但我更愿意,如果有更好的方法可以做到这一点。
<createView viewName="VPRODUCTS ">SELECT
A.Name
,B.Name AS AlternateName
from PRODUCTSA A
left join PRODUCTSB B
...
是否有一个属性或标记允许我在创建视图时指定列名,或者在DDL中提供原始SQL?
答案 0 :(得分:1)
没有别的办法。 Liquibase只是将嵌套的SELECT语句传递给create view语句,因此select中需要的任何内容都需要成为查询的一部分。除了预先挂起的“CREATE VIEW X”
之外,没有内置的视图语句预处理如果您想提供原始SQL,您始终可以使用该标记。
答案 1 :(得分:1)
另一种方法是使用子选择,如下所示:
cassandra-cli
或者沿同一思路使用create column family quux
with column_type = 'Super'
and comparator = 'BytesType'
and subcomparator = 'BytesType'
and default_validation_class = 'BytesType'
and key_validation_class = 'BytesType'
and read_repair_chance = 0.1
and dclocal_read_repair_chance = 0.0
and gc_grace = 86400
and min_compaction_threshold = 4
and max_compaction_threshold = 32
and compaction_strategy = 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'
and caching = 'KEYS_ONLY'
and cells_per_row_to_cache = '0'
and default_time_to_live = 0
and speculative_retry = '99.0PERCENTILE'
and compression_options = {'sstable_compression' : 'org.apache.cassandra.io.compress.SnappyCompressor'};
块。