在处理不可为空的列时,AS400机器上的DB2行为是否存在差异?
有人告诉我,如果你将一个null值插入到一个非null的列中,那么在DB2 as400上它会起作用(听起来很奇怪),但是如果Db2在Windows上运行会抛出错误。
一旦我掌握了环境,我就会对此进行验证,但仍然想知道是否有人听说过这样的事情。
结束注意: 这是一个随着时间的推移而发生变化的模式......所以该列在各版本之间发生了变化,这导致了混乱。
答案 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文档,则还会发现某些功能的工作方式有所不同。这些是具有不同客户基础的多个代码库驱动新功能的结果。它们很接近,但不完全相同,