1

在处理不可为空的列时,DB2 在 AS400 机器上的行为是否有所不同?

有人刚刚告诉我,如果您将一个空值插入到一个非空的列中,那么在 DB2 as400 上它将起作用(我知道这听起来很奇怪),但如果 Db2 在 Windows 上运行,则会引发错误。

我将在掌握环境后立即验证这一点,仍然想知道是否有人听说过这样的事情。

结束语:这是一个随时间变化的模式......因此该列在不同版本之间发生了变化,这导致了混乱。

4

2 回答 2

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.
于 2012-11-02T12:28:27.973 回答
0

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

于 2020-10-26T21:24:25.213 回答