源表测试(摘录)。括号中的值确定日期类型:
ID (integer) | SAMPLES (double precision) | NSAMPLES (double precision)
------------------------------------------------------------------------------
575 10.000000 10.000000有问题的SQL命令如下:
insert into TEST
select * from TEST where ID=575;如果我从开放源码工具FlameRobin的命令行执行此命令

更新后的表如下所示
ID (integer) | SAMPLES (double precision) | NSAMPLES (double precision)
------------------------------------------------------------------------------
575 10.000000 10.000000
810 10.000000 10.000000如果我从存储过程(从FlameRobin或我自己的应用程序中使用BDE ()组件)运行相同的命令,结果如下
ID (integer) | SAMPLES (double precision) | NSAMPLES (double precision)
------------------------------------------------------------------------------
575 10.000000 10.000000
810 10.000000 10.000000
811 10.000000 NULL有趣的是,两个列示例和NSAMPLES具有相同的日期类型,相同的源值(= 10.000000),而且都是可空的。为什么从存储过程调用的copy命令不复制NSAMPLES列的值?相反,它将空值插入到新记录中。
添加16.11.2012
也许可以在db管理工具FlameRobin的以下屏幕截图中找到一些提示。它们包含存储过程INSERT_TEST和表测试的完整定义。


为什么字段列表中缺少NSAMPLES列?

发布于 2012-11-15 15:21:30
问题是这两个环境对标识列的不同处理。
相反,请这样做:
Insert into TEST(SAMPLES, NSAMPLES)
Select SAMPLES, NSAMPLES
from TEST where ID = 575也就是说,如果显式地命名所有列,问题就会消失。这通常是个好主意。
https://stackoverflow.com/questions/13399319
复制相似问题