建库的时候没有写这个功能应该怎么办
时间: 2023-10-20 20:15:31 浏览: 74
如果建库时没有设置 `AUTO_INCREMENT` 属性,也可以通过以下步骤实现 `template_id` 字段的自增功能:
1. 首先,需要将 `tb_credit_sms_template` 表中的 `template_id` 字段设置为主键,并且删除原来的自增属性:
```sql
ALTER TABLE `tb_credit_sms_template` MODIFY `template_id` BIGINT(20) NOT NULL COMMENT '模板ID', DROP PRIMARY KEY, ADD PRIMARY KEY (`template_id`);
```
2. 创建一个名为 `tb_sequence` 的新表,用于保存自增序列的值。该表只需要包含两个字段:`sequence_name` 和 `current_value`,其中 `sequence_name` 表示序列的名称,`current_value` 表示当前序列的值。执行以下 SQL 语句:
```sql
CREATE TABLE `tb_sequence` (
`sequence_name` varchar(50) NOT NULL COMMENT '序列名称',
`current_value` bigint(20) NOT NULL COMMENT '当前值',
PRIMARY KEY (`sequence_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自增序列表';
```
3. 向 `tb_sequence` 表中插入一个名为 `tb_credit_sms_template_template_id_seq` 的序列,并将当前值初始化为 `1`:
```sql
INSERT INTO `tb_sequence` (`sequence_name`, `current_value`) VALUES ('tb_credit_sms_template_template_id_seq', 1);
```
4. 修改 `addSmsTemplate` 的 SQL 语句,在插入数据时,先从 `tb_sequence` 表中获取下一个序列值,然后将该值作为 `template_id` 的值插入到 `tb_credit_sms_template` 表中:
```xml
<insert id="addSmsTemplate" parameterType="com.psbc.pcps.credit.integral.marketing.api.mode I.SmsTemplateDTO">
<selectKey keyProperty="templateId" resultType="java.lang.Long" order="BEFORE">
SELECT current_value FROM tb_sequence WHERE sequence_name = 'tb_credit_sms_template_template_id_seq' FOR UPDATE
</selectKey>
INSERT INTO tb_credit_sms_template (template_id, push_plan_tp_cd, template_name, template_content, creator_no, create_time, modifier_no, mod_time, oprorlnst_no)
VALUES (#{templateId}, #{pushPlanTpCd}, #{templateName}, #{templateContent}, #{creatorNo}, #{createTime}, #{modifierNo}, #{modTime}, #{oprorlnstNo})
<update>
UPDATE tb_sequence SET current_value = current_value + 1 WHERE sequence_name = 'tb_credit_sms_template_template_id_seq'
</update>
</insert>
```
在这段 SQL 语句中,`<selectKey>` 标签用于获取下一个序列值,并将其赋值给 `templateId` 参数;`<update>` 标签用于更新 `tb_sequence` 表中的序列值。
注意,在获取序列值时使用了 `FOR UPDATE` 语句,该语句可以锁定 `tb_sequence` 表中的行,防止并发插入时出现序列重复的情况。
通过以上步骤,就可以实现类似于 `AUTO_INCREMENT` 的自增功能了。
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)