AS400上的Db2和插入不可空列的空值?

时间:2012-11-02 07:10:39

标签: sql null db2 ibm-midrange

在处理不可为空的列时,AS400机器上的DB2行为是否存在差异?

有人告诉我,如果你将一个null值插入到一个非null的列中,那么在DB2 as400上它会起作用(听起来很奇怪),但是如果Db2在Windows上运行会抛出错误。

一旦我掌握了环境,我就会对此进行验证,但仍然想知道是否有人听说过这样的事情。

结束注意: 这是一个随着时间的推移而发生变化的模式......所以该列在各版本之间发生了变化,这导致了混乱。

2 个答案:

答案 0 :(得分:1)

我会说答案是否定的。这是我在V7R1上使用交互式SQL(STRSQL)执行的快速测试:

CREATE TABLE QTEMP/TEST (F1 INT, F2 INT NOT NULL, F3 INT NOT NULL WITH DEFAULT);
INSERT INTO QTEMP/TEST (F1, F2, F3) VALUES(NULL, NULL, NULL);
Null values not allowed in column or variable F2.
INSERT INTO QTEMP/TEST (F1, F2, F3) VALUES(NULL, 0, NULL);
Null values not allowed in column or variable F3.

答案 1 :(得分:0)

詹姆斯在这里对Nulls有正确的答案。就差异而言,是的。实际上,DB2有三种类型,每种都有其自己的代码库。这些风格是DB2 for z,DB for i和DB2 for LUW。他们试图使功能集尽可能地接近,但是其中有些是存在的,而其他则没有。大多数差异是由于环境差异所致。例如,DB2 for i已紧密集成到OS中。 OS已经在管理文件系统和应用程序资源,因此数据库可以让OS进行OS的工作,并且不会重复许多工作,因此您将找不到与表空间等有关的命令。不是说文件系统没有被管理,而是操作系统来管理,而不是数据库引擎。如果您比较LUW和i文档,则还会发现某些功能的工作方式有所不同。这些是具有不同客户基础的多个代码库驱动新功能的结果。它们很接近,但不完全相同,