MULTISET volatile的使用 table 哪一类表

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

Teradata 有不同的表类型,当创建表的时候也会给他们有默认的赋值分别如下

当你用show table test检查表定义的时候发现,它已经变成如下定义:

可以看到多次插入重复数据都成功,检查表数据验证结果

在这种情况下执行SQL:

可以看到,插入重复数据将会出错检查表数据验证结果

这个表只存在于cache中,data dictionary中也找不到这个表当User结束一个session时,这个表将自动删除所有用户无法訪问,下次用户需要重新建表

这个表存在于data dictionary中,当User结束一个session时这个表中的数据将自动删除,表还保留其它用户可以继续访问这个表,但是数据只存在于某一session中

在上边的定义中,我们使用的是on commit preserve rows执行以下SQL,我们可以看到表中存有数据

如果把定义改为on commit delete rows,我们看到表中依然没有数据这是因为每个SQL 语句都是一个隐性事务。

查看创建好的表的定义:

为了避免上述问题的出现我们应该像下面那样处理,建表语句如下:

总结:为了避免上面的问题出现有两种解决方法:

1、不使用select 查询创建表結构,而先按需要的字段类型创建表然后插入查询中的数据;

2、像上面那样处理,对空字符需要cast为需要的数据类型

我要回帖

更多关于 volatile 的文章

 

随机推荐