SQL命令向SCORE1表插入一条记录:学号为"993503433"、课程号为"0001"、成绩是99。

2024-11-01 01:39:09
推荐回答(5个)
回答1:

插入的数据不符合规则···
如果你插入的数据不符合业务规则 ,这个时候就要回滚你的插入操作,业务规则在触发器中定义,也就是一个判断语句,回滚操作用ROLLBACK TRANSACTION 语句就可以,同时可以定义错误提示信息,下面这个列子你可以看看:

CREATE TRIGGER employee_insupd
ON employee
FOR INSERT, UPDATE
AS
DECLARE @min_lvl tinyint,
@max_lvl tinyint,
@emp_lvl tinyint,
@job_id smallint
SELECT @min_lvl = min_lvl,
@max_lvl = max_lvl,
@emp_lvl = i.job_lvl,
@job_id = i.job_id
FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id
JOIN jobs j ON j.job_id = i.job_id
IF (@job_id = 1) and (@emp_lvl <> 10)
BEGIN
RAISERROR ('Job id 1 expects the default level of 10.', 16, 1)
ROLLBACK TRANSACTION
--不符合业务规则,回滚,并输出错误信息
END
ELSE

IF NOT (@emp_lvl BETWEEN @min_lvl AND @max_lvl)
BEGIN
RAISERROR ('The level for job_id:%d should be between %d and %d.',
16, 1, @job_id, @min_lvl, @max_lvl)
ROLLBACK TRANSACTION
--不符合业务规则,回滚,并输出错误信息
END

回答2:

这个好做
insert into score1(学号,课程号,成绩) values('993503433','0001',99)

你是不是在这个表上建立了一个insert的触发器,如果是的话,当往这个表插入数据的时候,触发器就会被触发,当触发器执行失败时就有可能弹出这个窗口,你看一下数据是否已经插入

回答3:

执行下面这个 SQL, 查询一下, 在 score1 这个表上面, 有哪些触发器。
然后再去查看触发器那里有什么问题。

select
name
from
sysobjects
where
xtype='TR'
and parent_obj=object_id('score1 )
go

回答4:

把双引号改成单引号!就是 (") 改成(') .还有留意数据库中学号和课程号是不是char类型

回答5:

中文字段名要用[]括起来