成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

mysql實現(xiàn)nextVal功能,即使用代理表實現(xiàn)其他表的主鍵自增長

ISherry / 2422人閱讀

摘要:首先創(chuàng)建表插入記錄執(zhí)行函數(shù)查詢記錄如果出現(xiàn)錯誤,則執(zhí)行如下繼續(xù)執(zhí)行當(dāng)前記錄則成功創(chuàng)建函數(shù)創(chuàng)建好了表之后如圖字段為代理表名稱,原來為,此處我修改了,為當(dāng)前序號,為步長。

首先創(chuàng)建表:CREATE TABLE sys_sequence (
NAME varchar(50) NOT NULL,
CURRENT_VALUE int(11) NOT NULL DEFAULT "0",
INCREMENT int(11) NOT NULL DEFAULT "1",
PRIMARY KEY (NAME)
)
插入記錄:INSERT INTO SYS_SEQUENCE(NAME,CURRENT_VALUE,INCREMENT) VALUES("TBL_FS", 1,1)
執(zhí)行函數(shù):DELIMITER $$

DROP FUNCTION IF EXISTS currval$$

CREATE DEFINER=root@% FUNCTION currval(seq_name VARCHAR(50)) RETURNS INT(11)
BEGIN
DECLARE VALUE INTEGER;
SET VALUE=0;
SELECT current_value INTO VALUE
FROM sys_sequence
WHERE NAME=seq_name;
RETURN VALUE;
END$$

DELIMITER ;
查詢記錄:select currval("TBL_FS");
如果出現(xiàn)Error Code: 1449 The user specified as a definer ("root"@"%") does not exist 錯誤,則執(zhí)行如下sql:grant all privileges on . to root@"%" identified by "password";
flush privileges;

繼續(xù)執(zhí)行當(dāng)前記錄sql則成功
創(chuàng)建nextval函數(shù) :
DELIMITER $$
DROP FUNCTION IF EXISTS nextval$$

CREATE DEFINER=root@% FUNCTION nextval(seq_name varchar(50)) RETURNS int(11)
BEGIN
UPDATE sys_sequence
SET CURRENT_VALUE = CURRENT_VALUE + INCREMENT
where name=seq_name;
return currval(seq_name);
END$$
創(chuàng)建好了表之后 :如圖

NAME字段為代理表名稱,原來為 TBL_FS,此處我修改了,current_value為當(dāng)前序號,INCREMENT為步長。

接下來在mybatis配置文件目錄下創(chuàng)建mapper文件:

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">    



接下來在service層寫對應(yīng)的獲取數(shù)據(jù)方法:
@Service
public class MySQLFunctionServiceImpl implements MySQLFunctionService{

@Resource(name = "daoSupport")
private DaoSupport dao;    //DaoSupport封裝了對應(yīng)mybatis操作數(shù)據(jù)庫的方法,上篇文章有介紹

@Override
public int getNexVal(String table_name) {
    // TODO Auto-generated method stub
    return (int) dao.findForObject("MySQLFunctionMapper.getNexVal", table_name);
}

@Override
public int getCurrVal(String table_name) {
    // TODO Auto-generated method stub
    return (int) dao.findForObject("MySQLFunctionMapper.getCurrVal", table_name);
}

}

這樣就可以調(diào)用getNexVal方法獲取代理表中的ID值,再對應(yīng)賦值到其他表的主鍵中,一般可在controller調(diào)用給其他表的主鍵賦值后存入數(shù)據(jù)庫

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69852.html

相關(guān)文章

  • 記錄不存在則插入,存在則更新 → MySQL實現(xiàn)方式有哪些?

    摘要:需求背景環(huán)境版本開發(fā)規(guī)范公司后端開發(fā)規(guī)范有這么一點更新數(shù)據(jù)庫表中數(shù)據(jù)的時候,不允許先刪,然后批量插入需要將入?yún)⑴c表中數(shù)據(jù)比判斷,找出哪些是新插入,哪些需要更新,哪些是刪除的,然后再做對應(yīng)的數(shù)據(jù)操作需求我們有表如下當(dāng)商 ...

    pingan8787 評論0 收藏0
  • Mycat的實踐二:全局序列號

    摘要:這里應(yīng)該是的顯示,配置成了時間戳序列方式了,顯示的還是本地文件方式部分安裝參考百度初始化插入等測試受影響的行時間總結(jié)我們在分布式的環(huán)境下,建議全局序列的順序 上一節(jié)回顧 如果你還初識mycat,你可以閱讀 Mycat的實踐一:初始Mycat 遇到的問題 通過上一節(jié)的學(xué)習(xí),我們遇到了一個insert無法插入的問題 我們思考一個問題,我們上一節(jié)在mysql上創(chuàng)建了3個分庫,每個分庫下每一...

    DesGemini 評論0 收藏0
  • hibernate學(xué)習(xí)概要

    摘要:一中實體規(guī)則實體類創(chuàng)建的注意事項持久化類提供無參數(shù)構(gòu)造成員變量私有,提供方法訪問,需提供屬性屬性就是方法持久化類中的屬性,應(yīng)盡量使用包裝類型可以表示,在插如數(shù)據(jù)庫中有作用持久化類需要提供主鍵屬性與數(shù)據(jù)庫中主鍵列對應(yīng)不需要修飾原因使用代理生成 一、hibernate中實體規(guī)則 實體類創(chuàng)建的注意事項 1.持久化類提供無參數(shù)構(gòu)造2.成員變量私有,提供get、set方法訪問,需提供屬性(屬性就...

    Noodles 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<