mysql学习小计2

1,mysql报错

The error occurred while setting parameters
SQL: INSERT INTO t_sale ( amount, product_id, batch ) VALUES ( ?, ?, ? )
Cause: java.sql.SQLException: Incorrect string value: ‘\xE5\xB8\x85\xE4\xBB\x95…’ for column ‘_name’ at row 30
在这里插入图片描述
这个错误通常发生在数据库字符集和应用程序字符集不匹配的情况下,导致插入非法的字符集到数据库字段中

解决这个问题的一种方法是将数据库字符集和应用程序字符集保持一致。你可以在创建数据库时指定正确的字符集,然后在应用程序中设置相应的字符集。

(1)如果你已经创建了数据库并且不能更改数据库字符集,则可以尝试在插入数据时使用一些方法来保证数据字符集正确。例如,你可以在JDBC连接URL中指定字符集

jdbc:mysql://localhost/mydatabase?useUnicode=true&characterEncoding=utf8

(2)此外,可以在MySQL中,可以使用 ALTER TABLE 语句来更改表的排序规则(navicat 查询——新建查询)

ALTER TABLE my_table COLLATE utf8_general_ci;

2,修改一个自动递增字段的开始值

在MySQL中,如果你需要修改一个自动递增字段的开始值,可以使用 ALTER TABLE 语句来进行操作。以下是一个示例:

ALTER TABLE my_table AUTO_INCREMENT = 100;

在这里插入图片描述

这个语句将my_table表的自动递增值设置为100。也就是说,下一次插入数据时,该自动递增字段的值将从100开始,而不是从默认的1开始。

需要注意的是,如果my_table表已经有了自动递增字段的数据,那么这个语句将不能直接改变表中已有的数据行的值。在这种情况下,你需要使用 ALTER TABLE 和 UPDATE 语句一起来完成该操作。以下是一个包含 UPDATE 语句的示例:

ALTER TABLE my_table AUTO_INCREMENT = 100;
UPDATE my_table SET id = id + 100;

这个语句将my_table表的自动递增值设置为100,并将id字段的每个旧值加上100。这样,就可以正确地重新设置自动递增字段,并调整现有数据行的值。

3,自动从库存表里面加载销售数据

新建一条销售数据,填入商品编号、批次、销售数量,自动从库存表里面加载商品名。单价等字段
新建触发器

CREATE TRIGGER automatic_update
BEFORE INSERT ON t_sale
FOR EACH ROW
BEGIN
    DECLARE _product_id INT;
    DECLARE _batch INT;
	DECLARE _name VARCHAR(255);
	DECLARE _unit VARCHAR(255);
	DECLARE _description VARCHAR(255);
	DECLARE _sp DECIMAL(10,2);
		
	SET _product_id = NEW.product_id;
    SET _batch = NEW.batch;
	SELECT name,unit,description,selling_price INTO _name,_unit,_description,_sp FROM t_store WHERE product_id = _product_id AND batch = _batch;

    IF (_name IS NOT NULL) THEN
        SET NEW.name = _name;
    END IF;
		
		IF (_unit IS NOT NULL) THEN
        SET NEW.unit = _unit;
    END IF;

		IF (_description IS NOT NULL) THEN
        SET NEW.description = _description;
    END IF;
		
    IF (_sp IS NOT NULL) THEN
        SET NEW.price = _sp ;
        SET NEW.money = NEW.amount * _sp;
    END IF;
END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值