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';