解析SQL语句,修正insert/update语句中


按理说,表里有 modifydate 字段,insert/update时,都需要修改 modifydate 的值。系统前前后后,有7年的历史了,代码里的CRUD SQL都是拼接的,然后扔给一个公共方法,去跟数据库交互:

   
  public object put(String key,String value);
 

其中,key,就是SQL语句;value只允许输入INSERT/UPDATE/SELECT/DELETE,多个操作之间使用“||”分隔。
update的修改,我已经搞定了。将“ set ”替换成形如“ set modifydate=date'2012-12-25'”的字符串,即可。至于,检查表里有无modifydate字段;SQL语句,即key中,是否有modifydate等操作,都处理掉了。
----------说的有点多,没办法,水平有限,说少了,也交代不清楚------------------
insert的语句,怎么处理呢?哎,情况有点多呢

   
  DROP TABLE t_user;
  
CREATE TABLE t_user (
id int,
name varchar(255) DEFAULT NULL,
birthday date
);
select * from t_user;

insert into t_user values(null,'zhangsan','2012-11-25');
insert into t_user (id) values(3);
insert into t_user (id,name,birthday) values(4,'wangwu','2012-12-25');

insert into t_user select * from t_user where id=3;
insert into t_user (name) select name from t_user where id=3;
insert into t_user (id,name,birthday) select id+4,name,birthday from t_user where id=4;
insert into t_user (id,name,birthday) (select id+1,name,birthday from t_user where id=5);

sql java

水无月留姬 11 years, 1 month ago

你干脆这样做得了 插入的时候 返回 id;有 modifydate 操作 你就根据id update一次 modifydate=now()

OTAKU牧 answered 11 years, 1 month ago

Your Answer