程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL類ORACLE序列實現遇到的問題

MYSQL類ORACLE序列實現遇到的問題

編輯:MySQL綜合教程

MYSQL類ORACLE序列實現遇到的問題   MYSQL實現ORACLE的nextval方式 新建函數,如下:   -- -------------------------------------------------------------------------------- -- Routine DDL -- Note: comments before and after the routine body will not be stored by the server -- -------------------------------------------------------------------------------- DELIMITER $$   CREATE DEFINER=`root`@`localhost` FUNCTION `nextval`(seq_name varchar(100)) RETURNS bigint(20) BEGIN     DECLARE cur_val bigint(20);       SELECT cur_value INTO cur_val FROM sequence WHERE name = seq_name;       IF cur_val IS NOT NULL THEN         UPDATE             sequence         SET cur_value = cur_value + increment         WHERE name = seq_name;     END IF;     RETURN cur_val; END 新建表sequence   CREATE TABLE `sequence` (   `name` varchar(100) NOT NULL,   `increment` int(11) unsigned NOT NULL DEFAULT '1',   `cur_value` bigint(20) unsigned DEFAULT '1',   PRIMARY KEY (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 應用使用SSI,通過 select nextval('SEQ') 獲得序列值。 遇到的問題:當select nextval('A') 後,再在另外的功能點中使用select nextval('B') 時,提示無column nextval('A'),拋出SQL異常。開始沒搞明白,百度&谷歌都出動了。後來細想了下,應該是第2次的時候nextval('A')被當成了別名。故在ibatis的SQL配置中稍作修改select nextval('A') as x,就OK了。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved