Sql 复制自动递增字段,并在新字段中具有相同的值
我有一个具有自动递增字段ID的表,例如,我想将此列复制为ID2字符串,但我希望它在每次ID自动递增时更新。我知道这种方法非常具体,有点难看,但有没有办法做到这一点 例如:启动数据库Sql 复制自动递增字段,并在新字段中具有相同的值,sql,oracle,Sql,Oracle,我有一个具有自动递增字段ID的表,例如,我想将此列复制为ID2字符串,但我希望它在每次ID自动递增时更新。我知道这种方法非常具体,有点难看,但有没有办法做到这一点 例如:启动数据库 ID Title 1 titl_14 ... 19 titl_13 561 titl_1 671 titl_1 1765 titl_1 1834 titl_1 1909
ID Title
1 titl_14
...
19 titl_13
561 titl_1
671 titl_1
1765 titl_1
1834 titl_1
1909 titl_1
1910 titl_1
结果:
ID Title ID2(varchar)
1 titl_14 1
... ...
19 titl_13 19
561 titl_1 561
671 titl_1 671
1765 titl_1 1765
1834 titl_1 1834
1909 titl_1 1909
1910 titl_1 1910
当插入一个新数据时,ID和ID2都会自动变为1911
提前感谢您在Oracle 12C中,您可以创建生成的列:
alter table t add id_str as (to_char(id));
在早期版本中,您可以使用视图获得几乎相同的效果
如果您确实想使用存储空间并提高性能,还可以直接将列添加到表中,并使用触发器设置值。在Oracle 12C中,您可以创建一个生成的列:
alter table t add id_str as (to_char(id));
在早期版本中,您可以使用视图获得几乎相同的效果
如果您真的想耗尽存储空间并提高性能,还可以直接将列添加到表中,并使用触发器设置值。这没有意义。为什么要生成两个标识列?Oracle是否执行自动增量?诚然,我们被困在10g上,但它使用的是序列。我需要实现一个函数,该函数需要字段作为字符串,但我的整个代码使用它作为int,因为转换器可以工作,但这将导致巨大的重构,我同意这是非常丑陋的。所以将id传递给包装在to_CHAR()中的函数?这里不需要太多的分解。创建一个带有
SELECT source.*的视图,从source
将CHAR(id)作为id2?这没有意义。为什么要生成两个标识列?Oracle是否执行自动增量?诚然,我们被困在10g上,但它使用的是序列。我需要实现一个函数,该函数需要字段作为字符串,但我的整个代码使用它作为int,因为转换器可以工作,但这将导致巨大的重构,我同意这是非常丑陋的。所以将id传递给包装在to_CHAR()中的函数?不需要太多的分解。创建一个带有选择源代码。*的视图,以便将字符(id)作为id2从源代码创建?