Netezza SQL中如何自动同步字符型账号的整数列?
解决Netezza中自动同步字符型账号到整数列的问题
针对你的需求,推荐使用Netezza的**生成列(Generated Column)**实现自动同步,无需维护触发器,操作简单且性能可靠。以下是具体步骤:
1. 直接添加自动同步的整数列
如果还未新增Account_No_INT列,执行以下语句即可创建自动同步的整数列:
ALTER TABLE TABLE_A ADD COLUMN Account_No_INT INT GENERATED ALWAYS AS (CAST(Account_No AS INT)) STORED;
这条语句会完成三件事:
- 新增整数类型的
Account_No_INT列 - 自动将现有
Account_No列的字符型数字转换为整数填充到新列 - 后续每次插入或更新
Account_No时,Account_No_INT会自动同步更新
2. 已手动添加普通整数列的调整方案
如果之前已经手动添加了普通的Account_No_INT列,需要先删除该列,再重新创建生成列:
-- 删除已有的普通整数列 ALTER TABLE TABLE_A DROP COLUMN Account_No_INT; -- 创建自动同步的生成列 ALTER TABLE TABLE_A ADD COLUMN Account_No_INT INT GENERATED ALWAYS AS (CAST(Account_No AS INT)) STORED;
关键说明
- 由于
Account_No从不以0开头且为数字型字符串,CAST(Account_No AS INT)不会出现转换错误,结果完全匹配原列的数字值 - 生成列采用
STORED方式,会实际存储数据,查询时性能与普通列一致,不会额外消耗计算资源 - 无论每月新增数据还是更新现有
Account_No值,Account_No_INT都会自动同步,无需额外操作
内容的提问来源于stack exchange,提问作者AAKASH IYER
相关产品推荐
相关产品推荐

