触发器的一个实际用途是在单个表中进行验证(也就是说,可以通过使用正在修改的表中的列来执行验证)。创建一个触发器,用于验证摘要是否正确插入,也就是说,摘要实际上是内容的前12个字符,后跟“…”。触发器应拒绝没有有效摘要值的插入。通过发出两个insert命令来验证触发器的工作情况—一个具有正确的摘要,另一个具有不正确的摘要。列出插入后的post表,显示一个插入被阻止,另一个成功。
对于更多上下文,有一个“content”字段,其中“summary”字段从“content”中提取前12个字符,并在其后加上(3点),共15个字符。
示例:content='我有一次很棒的旅行',summary='我有一次很棒的旅行…'
到目前为止,我只有这些:
CREATE OR REPLACE TRIGGER summary_length
BEFORE UPDATE OR INSERT ON Post
FOR EACH ROW
BEGIN
IF :NEW.summary != SUBSTR(content, 1, 12) || '...' THEN
RAISE_APPLICATION_ERROR(-20001, 'Summary must only include the first 12 characters of Content, followed by ...');
END IF;
END;
我得到以下错误:
错误(1,4):pl/sql:语句忽略错误(1,30):pls-00201:必须声明标识符“content”
我的类的教程显示了这个例子,但是这个例子看起来比强制执行要容易得多,摘要的前12个字符=内容的前12个字符,然后是“…”
CREATE OR REPLACE TRIGGER no_neg_bal_trg
BEFORE UPDATE OR INSERT ON Customer
FOR EACH ROW
BEGIN
IF :NEW.customer_total < 0 THEN
RAISE_APPLICATION_ERROR(-20001,'Customer balance cannot be negative.');
END IF;
END;
我真的很难弄明白这一点,任何帮助将非常感谢!
暂无答案!
目前还没有任何答案,快来回答吧!