我正在使用 ftok/shmget/shmat/shmdt 函数在 Linux 上创建、写入和读取共享段。
如果我在一个程序中写入该段然后退出,然后稍后从另一个程序读取该段,我会惊讶地发现数据仍然存在。
我原以为当共享一个段的最后一个进程执行 shmdt 时,该段将被释放。
我可以依赖这种行为吗?还是类似于在 free() 之后继续使用指针?
我知道在向包含SQL Server中的数据的表中添加列时,该列必须具有NULL选项或默认值.否则SQL Server会用新的行填充什么?
我不知道为什么我不能在空表中添加NOT NULL列.我已经在两个SQL 2008实例和一个SQL 2005实例上尝试了这个,没有任何问题.但是,使用SQL 2000的客户确实存在此问题.这是与SQL 2000相关还是可以关闭的选项.我们希望这是一个选择.
Select @@Version
Run Code Online (Sandbox Code Playgroud)
Microsoft SQL Server 2000 - 8.00.760(Intel X86)2002年12月17日14:22:05版权所有(c)1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.1(Build 2600:Service Pack 3)
Select count(*) from actinv
0
ALTER TABLE [ActInv] ADD [BATCHNUMBER] NVARCHAR(50) NOT NULL
Run Code Online (Sandbox Code Playgroud)
消息4901,级别16,状态1,行1 ALTER TABLE仅允许添加可包含空值或指定了DEFAULT定义的列.列'BATCHNUMBER'无法添加到表'ActInv'中,因为它不允许空值并且不指定DEFAULT定义.