是的,必须有百默认值。
因为在SQL SERVER中NULL跟''是完全不一样的,NULL表示未知,没有类型可言,而''是有类型的,表示一个空的字符串。所以有not null约束的列是可以插入''的。
有时候做判断的时候可能某个度列既有NULL值又有''值,这时候就经常用 where isnull(列名,'')=''进行判断。在ORACLE中,''是等同于NULL值进行处理的,这时候有not null约束的列就不知能插入''了。
在数据库中,参照完整性违约处理中有拒绝处理、级联修改、设为空值三种方法,那设置空值是如何定义的:
这个是要自己定义的,自己写很麻烦,
下面是我用SQL SERVER逆向生成的代码,你可以看一下.
USE [stu]
GO
/****** 对象: Table [dbo].[student] 脚本日期: 03/10/2011 14:52:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[student](
[id] [int] NOT NULL,
[did] [int] NULL,
CONSTRAINT [PK_student] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[student] WITH CHECK ADD CONSTRAINT [FK_student_dd] FOREIGN KEY([did])
REFERENCES [dbo].[dd] ([Did])
ON UPDATE SET NULL
ON DELETE SET NULL
GO
ALTER TABLE [dbo].[student] CHECK CONSTRAINT [FK_student_dd]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)