oracle触发器:我想在插入一条数据的时候,对其中的一个字段进行默认赋值

iCielo 2011-01-02 07:47:37
Create trigger t_qd_set_date
before insert
On t_qd
for each row
Begin
when (new.sj = '' or new.sj is null)
begin
:new.sj = to_char(sysdate,'yyyy-MM-dd HH:mm:ss')
end
End;
我是这么写的触发器。不知道有没错没。

最初问题是,我想在hibernate中操作插入。但是如果字段不给值的话,hibernate默认为“”,而不能使用建表时的default赋值。而且我也不知道怎么在hibernate中调用自己写的sql语句insert。
不知有谁可以帮我解决下,很急,在线等。
思路:写触发器,hibernate中设置,hibernate调用自己写的insert sql语句。都可以。
...全文
906 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
iCielo 2011-01-02
  • 打赏
  • 举报
回复
我之前也有这么写过,但是不知道哪里出问题,就是有问题。
现在可以了,非常感谢呀,感激涕零呀。
我结贴给分了。

[Quote=引用 1 楼 tangren 的回复:]
SQL code
--这样就行了
CREATE OR REPLACE TRIGGER t_qd_set_date
BEFORE INSERT ON t_qd
FOR EACH ROW
BEGIN
IF :new.sj IS NULL THEN
:new.sj := to_char(SYSDATE, 'yyyy-mm-dd hh24:mm:ss');
END ……
[/Quote]
tangren 2011-01-02
  • 打赏
  • 举报
回复
--这样就行了
CREATE OR REPLACE TRIGGER t_qd_set_date
BEFORE INSERT ON t_qd
FOR EACH ROW
BEGIN
IF :new.sj IS NULL THEN
:new.sj := to_char(SYSDATE, 'yyyy-mm-dd hh24:mm:ss');
END IF;
END;
/

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧