Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 不能将值NULL插入列';sdept&x27;,表格';XSGL.dbo.student';;该列不允许空值。插入失败_Sql Server_Management Studio Express - Fatal编程技术网

Sql server 不能将值NULL插入列';sdept&x27;,表格';XSGL.dbo.student';;该列不允许空值。插入失败

Sql server 不能将值NULL插入列';sdept&x27;,表格';XSGL.dbo.student';;该列不允许空值。插入失败,sql-server,management-studio-express,Sql Server,Management Studio Express,我在SQL Server上遇到了一些问题。 我有一个名为XSGL的数据库来管理学生信息 首先,我在表Student上创建了一个名为IS_Student的视图 然后我想在视图中插入一个学生 INSERT INTO IS_Student VALUES('200215129', '赵新', '男', 20) ; 但它有一个错误: Msg 515, Level 16, State 2, Line 1 不能将值 NULL 插入列 'sdept',表 'XSGL.dbo.student';列不允许有

我在SQL Server上遇到了一些问题。 我有一个名为
XSGL
的数据库来管理学生信息

首先,我在表Student上创建了一个名为
IS_Student
的视图

然后我想在视图中插入一个学生

INSERT INTO IS_Student 
VALUES('200215129', '赵新', '男', 20) ;
但它有一个错误:

Msg 515, Level 16, State 2, Line 1
不能将值 NULL 插入列 'sdept',表 'XSGL.dbo.student';列不允许有 Null 值。INSERT 失败。
语句已终止。
我把它翻译成英语

You cannot insert the value NULL into the column 'sdept', the table 'XSGL.dbo.student'; the column does not allow Null values. INSERT failed.
The statement has been terminated.
视图
IS_Student
是在其
sdept
'IS'
的学生上创建的,我还使用带有复选选项的
创建它。为什么错误告诉我不能将值NULL插入列'sdept'


为我可怜的Endlish道歉。提前感谢。

sdebt不是视图的一部分,它是基础表中不可为空的列。
由于它不是视图或INSERT语句的一部分,它将尝试向其中插入NULL,这将使它失败。

sdebt不是视图的一部分,并且它是基础表中不可为NULL的列。
由于它不是视图或INSERT语句的一部分,它将尝试向其中插入NULL,这将使它失败。

该条件是视图的一部分,但在基础表上执行
INSERT

您需要在视图上创建一个Insert触发器,该触发器处理视图条件的默认值:

CREATE TRIGGER TR_Ins_IS_Student 
ON dbo.IS_Student
INSTEAD OF INSERT 
AS
BEGIN
    INSERT INTO dbo.Student (sno, sname, ssex, sage, sdept)
    SELECT sno, sname, ssex, sage, 'IS'
    FROM inserted
END

该条件是视图的一部分,但在基础表上执行
insert

您需要在视图上创建一个Insert触发器,该触发器处理视图条件的默认值:

CREATE TRIGGER TR_Ins_IS_Student 
ON dbo.IS_Student
INSTEAD OF INSERT 
AS
BEGIN
    INSERT INTO dbo.Student (sno, sname, ssex, sage, sdept)
    SELECT sno, sname, ssex, sage, 'IS'
    FROM inserted
END

我知道我只有4个值,但视图
IS_Student
是针对
sdept
'IS'
的学生创建的。因此,当我插入4个值时,应该将其转换为5个值。第五个值是自动添加的。我编辑了我的答案。“自动添加”是什么意思?您提供的代码中没有任何内容会自动向不可为空的sdept列添加值。
@Cedersved
为什么
sdept
不在我的视图中。我不明白。它没有显示在
视图中,因为它没有显示在
选择中,@guapi上。因此,在
视图
上插入一个
将代替默认值,或者在没有默认值时插入一个
NULL
。为什么要在
视图中插入而不是在表中插入?如果出于某种原因需要在视图中插入。您可以在sdebt列上添加默认约束,以便在插入提供NULL时提供定义的值。我知道我只有4个值,但视图
IS_Student
是在其
sdept
'IS'
的学生上创建的。因此,当我插入4个值时,应该将其转换为5个值。第五个值是自动添加的。我编辑了我的答案。“自动添加”是什么意思?您提供的代码中没有任何内容会自动向不可为空的sdept列添加值。
@Cedersved
为什么
sdept
不在我的视图中。我不明白。它没有显示在
视图中,因为它没有显示在
选择中,@guapi上。因此,在
视图
上插入一个
将代替默认值,或者在没有默认值时插入一个
NULL
。为什么要在
视图中插入而不是在表中插入?如果出于某种原因需要在视图中插入。您可以在sdebt列上添加默认约束,以便在inserts提供NULL时提供定义的值。无法执行此命令。有一个错误:
消息2112,级别16,状态1,过程TR_Ins_is_Student,第1行[批处理开始行0],因为视图“dbo.is_Student”是使用CHECK选项定义的,因此无法为此视图创建触发器“TR_Ins_is_Student”。
我想您不需要
WITH CHECK选项
子句,由于
WHERE
条件引用的列不是
SELECT
ed,因此无法执行此命令。有一个错误:
消息2112,级别16,状态1,过程TR_Ins_is_Student,第1行[批处理开始行0],因为视图“dbo.is_Student”是使用CHECK选项定义的,因此无法为此视图创建触发器“TR_Ins_is_Student”。
我想您不需要
WITH CHECK选项
子句,因为
WHERE
条件所指的列不是
SELECT
ed