使用跨设备表单,需要用到几张系统表和存储过程,需要在业务库先初始化建好。

系统表

序号发生器表 - id_codeid

Mysql建表SQL语句

CREATE TABLE `id_codeid` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `ID_NAME` varchar(50) NOT NULL,
  `ID_VALUE` int(11) NOT NULL,
  `ID_PRE` varchar(50) DEFAULT NULL,
  `ID_DATE_FLAG` smallint(6) DEFAULT NULL,
  `ID_LENGTH` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `ID_CODEID_ID_NAME` (`ID_NAME`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1;

华为GaussDB建表SQL语句

CREATE TABLE id_codeid (
  ID INTEGER AUTO_INCREMENT,
  ID_NAME varchar(50) NOT NULL,
  ID_VALUE INTEGER NOT NULL,
  ID_PRE varchar(50) DEFAULT NULL,
  ID_DATE_FLAG smallint DEFAULT NULL,
  ID_LENGTH INTEGER DEFAULT NULL,
  PRIMARY KEY (ID)
);

表单附件表 - sys_attachment

Mysql建表SQL语句

CREATE TABLE `sys_attachment` (
  `SA_ID` int(11) NOT NULL,
  `SA_ORIGINAL_NAME` varchar(255) DEFAULT NULL,
  `SA_SERVER_PATH` varchar(255) DEFAULT NULL,
  `SA_SIZE` int(11) DEFAULT NULL,
  `SA_CONTENT_TYPE` varchar(255) DEFAULT NULL,
  `SA_CONTENT` mediumblob,
  `SA_STORAGE_TYPE` smallint(2) DEFAULT NULL,
  PRIMARY KEY (`SA_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='乐创者-附件存储';

华为GaussDB建表SQL语句

CREATE TABLE sys_attachment (
  SA_ID INTEGER NOT NULL,
  SA_ORIGINAL_NAME varchar(255) DEFAULT NULL,
  SA_SERVER_PATH varchar(255) DEFAULT NULL,
  SA_SIZE INTEGER DEFAULT NULL,
  SA_CONTENT_TYPE varchar(255) DEFAULT NULL,
  SA_CONTENT blob,
  SA_STORAGE_TYPE smallint DEFAULT NULL,
  PRIMARY KEY (SA_ID)
);

系统存储过程

序号生成存储过程 - sp_get_uni_id

该存储过程,用以修改系统表id_codeid的值。
目前作用于两个功能点:
1)lczCreater的文件上传;
2)lczCreater的主从表模型的主键自动生成。

Mysql的SQL语句

CREATE DEFINER=`taskmgr`@`%` PROCEDURE `sp_get_uni_id`(
 IN in_name VARCHAR(50),
 IN in_step INT,
 OUT out_value VARCHAR(50)
)
BEGIN
  START TRANSACTION;

  UPDATE ID_CODEID SET ID_VALUE = ID_VALUE+in_step WHERE ID_NAME = in_name;
  SELECT ID_VALUE - in_step + 1 INTO out_value FROM ID_CODEID WHERE ID_NAME = in_name;
  IF out_value IS NULL
  THEN
    INSERT INTO ID_CODEID (ID_NAME, ID_VALUE) VALUES (in_name, in_step);
    SET out_value = 1;
  END IF;

  COMMIT;
END

华为GaussDB的SQL语句

CREATE OR REPLACE PROCEDURE sp_get_uni_id(
    in_name    IN   VARCHAR(50),
    in_step    IN   INTEGER,
    out_value  OUT  INTEGER
)
AS
BEGIN
  UPDATE ID_CODEID SET ID_VALUE = ID_VALUE+in_step WHERE ID_NAME = in_name;
  SELECT ID_VALUE - in_step + 1 INTO out_value FROM ID_CODEID WHERE ID_NAME = in_name;
  IF out_value IS NULL
  THEN
    INSERT INTO ID_CODEID (ID_NAME, ID_VALUE) VALUES (in_name, in_step);
    SET out_value = 1;
  END IF;
END;
作者:Eric  创建时间:2023-06-20 11:55
最后编辑:林  更新时间:2025-04-24 13:55