Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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
DB2如何防止删除值(在删除之前使用';触发器)?_Db2 - Fatal编程技术网

DB2如何防止删除值(在删除之前使用';触发器)?

DB2如何防止删除值(在删除之前使用';触发器)?,db2,Db2,我有这样的代码: CREATE TABLE A10.STUDENTS ( IDSTUDENT INTEGER NOT NULL, LASTNAME VARCHAR(30) NOT NULL, FIRSTNAME VARCHAR(30) NOT NULL, MARK DECIMAL(5,1) NOT NULL, PRIMARY KEY ( IDSTUDENT ) ); ALTER TABLE A10.STUDENTS ADD CONSTRAINT CHECK_MARK CHECK(CAST(MA

我有这样的代码:

CREATE TABLE A10.STUDENTS
( IDSTUDENT INTEGER NOT NULL,
LASTNAME VARCHAR(30) NOT NULL,
FIRSTNAME VARCHAR(30) NOT NULL,
MARK DECIMAL(5,1) NOT NULL,
PRIMARY KEY ( IDSTUDENT )
);

ALTER TABLE A10.STUDENTS ADD CONSTRAINT CHECK_MARK CHECK(CAST(MARK AS DECIMAL(5,1)) IN (2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0));

INSERT INTO A10.STUDENTS (LASTNAME,FIRSTNAME,MARK) VALUES ('Smith','John',2.0);
我想添加“删除前”触发器,防止删除3.0下的标记

-- <ScriptOptions statementTerminator="@" />
CREATE TRIGGER A10.DONT_DELETE_MARKS
NO CASCADE BEFORE DELETE
ON A10.STUDENTS
REFERENCING NEW AS N OLD AS O
FOR EACH ROW MODE DB2SQL NOT SECURED
BEGIN 
    --and what here?
END@
-- <ScriptOptions statementTerminator=";" />
但它不起作用

谢谢你的帮助:)

什么叫“不工作”

Db2的平台和版本是什么

试一试

xxxxx
替换为您希望使用的SQL状态码。注意

SQLSTATE值由两个字符的类代码值组成, 后跟三个字符的子类代码值。类代码值 表示成功和不成功完成的类别 条件如果您想使用SQLSTATE作为 应用程序的返回码,您可以定义自己的SQLSTATE类 或使用以下准则的子类:

  • 可以定义以字符7到9或I到Z开头的SQLSTATE类。在这些类中,任何子类都可以 定义
  • 以字符0到6或A到H开头的SQLSTATE类保留给数据库管理器。在这些班级中, 以字符0到H开头的子类为 数据库管理器。以字符I开头的子类 通过Z可以定义

请展示你到目前为止到底做了什么。您得到了什么错误或意外的结果?是的,我是DB2新手,很抱歉我迷失了方向。版本是DB2Express-CV11.1.4040.491。您的回答确实帮助了我(还有DB2 Cookbook),我设法解决了这个问题。
raise_application_error(-20001,'Records can not be deleted');
signal sqlstate xxxxx
   set message_text = 'Records can not be deleted';