1、seq
 在oracle中获取下一个ID可以用seq,在mysql中可以设置某列自增

但是在同时添加主从表是设置自增不好在同一个事物中处理。

 

结合网上提供的方法,这里写了个可以获得每个表的seq的函数

CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS bigint(20)
BEGIN

DECLARE value BIGINT;

update   myseq   set   seq   =   last_insert_id(seq+1)  where  tablename = lower(seq_name); 

SELECT seq  INTO value  from myseq WHERE tablename = lower(seq_name); 



RETURN value;

END;

 

 

2、在执行insert into 时不能出现表别名

 

3、需要注意数据库中表和视图大小写,否则会出错

 

4、获得当前时间可用system(),或者now(),
   在oracle中的 to_date(''%s'',''yyyy-mm-dd hh24:mi:ss'')需要用 ( str_to_date(’‘%s’‘, '%Y-%c-%d %H:%i:%s'))
  或者 ( DATE_FORMAT('2010-10-04 22:23:00', '%Y-%c-%d %H:%i:%s'))  替换
  DATE_FORMAT(date,format)

  根据format 字符串安排date 值的格式。

  以下说明符可用在 format 字符串中:

  说明符说明

  %a工作日的缩写名称 (Sun..Sat)

  %b月份的缩写名称 (Jan..Dec)

  %c月份,数字形式(0..12)

  %D带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...)

  %d该月日期, 数字形式 (00..31)

  %e该月日期, 数字形式(0..31)

  %f微秒 (000000..999999)

  %H小时(00..23)

  %h小时(01..12)

  %I小时 (01..12)

  %i分钟,数字形式 (00..59)

  %j一年中的天数 (001..366)

  %k小时 (0..23)

  %l小时 (1..12)

  %M月份名称 (January..December)

  %m月份, 数字形式 (00..12)

  %p上午(AM)或下午( PM)

  %r时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM)

  %S秒 (00..59)

  %s秒 (00..59)

  %T时间 , 24小时制 (小时hh:分钟mm:秒数ss)

  %U周 (00..53), 其中周日为每周的第一天

  %u周 (00..53), 其中周一为每周的第一天

  %V周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用

  %v周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用

  %W工作日名称 (周日..周六)

  %w一周中的每日 (0=周日..6=周六)

  %X该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用

  %x该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用

  %Y年份, 数字形式,4位数

  %y年份, 数字形式 (2位数)

  %%‘%’文字字符

  所有其它字符都被复制到结果中,无需作出解释。

  注意:‘%’字符要求在格式指定符之前。

 

5、在oracle 中用rownum来限制行数,这个rownum必行写在where 后面
  但是在mysql中是用limit 而且只能是在sql 语句的最后面。

posted on 2010-08-04 13:53  jing_lee  阅读(344)  评论(0)    收藏  举报