CREATE TRIGGER Sample_tri 
BEFORE INSERT ON Sample 
FOR EACH ROW 
BEGIN SELECT Sample_sequence.NextVAl INTO:new.ID FROM dual;
END; 我想让这个触发器执行的条件发生在当Sample.id这个字段的值不为空,且是数字类型的时候。
谢谢.

解决方案 »

  1.   

    不是很明白你的意思。
    你说插入的值?插入的值的类型本来就是和你数据库的表有关的呀。假如,你说,你想判断一个字符串,是不是数字的话,
    有两种常用的方法。
    1.用to_number函数,去抓exception
    2.用translate函数,比较前后字符串长度。有小数部分的时候,需要注意小数点。
      

  2.   

    看你后来写的select句子,本来就是数字类型嘛。
      

  3.   

    if 值 is not null then
      刚才说过的数字检查
    END IF;
      

  4.   

    CREATE TRIGGER Sample_tri   
    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;   我这样写的,执行的时候出错。请你给个完整的代码段,谢谢
      

  5.   

    赫赫。
    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;
    /类似这样.(没有环境测试,凭感觉写的)
    假如执行出错的话,最好给我一下出错误信息.