CREATE TRIGGER Sample_tri
BEFORE INSERT ON Sample
FOR EACH ROW
BEGIN SELECT Sample_sequence.NextVAl INTO:new.ID FROM dual;
END; 我想让这个触发器执行的条件发生在当Sample.id这个字段的值不为空,且是数字类型的时候。
谢谢.
BEFORE INSERT ON Sample
FOR EACH ROW
BEGIN SELECT Sample_sequence.NextVAl INTO:new.ID FROM dual;
END; 我想让这个触发器执行的条件发生在当Sample.id这个字段的值不为空,且是数字类型的时候。
谢谢.
你说插入的值?插入的值的类型本来就是和你数据库的表有关的呀。假如,你说,你想判断一个字符串,是不是数字的话,
有两种常用的方法。
1.用to_number函数,去抓exception
2.用translate函数,比较前后字符串长度。有小数部分的时候,需要注意小数点。
刚才说过的数字检查
END IF;
BEFORE INSERT ON Sample
if Sample.ID is null then
FOR EACH ROW
BEGIN SELECT Sample_sequence.NextVAl INTO:new.ID FROM dual;
END IF;
END; 我这样写的,执行的时候出错。请你给个完整的代码段,谢谢
Sample.ID 应该改为new.id吧,你不是判断准备插入的值的吗?CREATE OR REPLACE TRIGGER Sample_tri
BEFORE INSERT ON Sample
FOR EACH ROW WHEN (NEW.ID IS NULL)
BEGIN
SELECT Sample_sequence.NextVAl INTO:new.ID FROM dual;
END;
/类似这样.(没有环境测试,凭感觉写的)
假如执行出错的话,最好给我一下出错误信息.