澳门十大赌场最新排名 > 澳门十大赌场 > 常见的错误及解决方案,游标和递归sql

原标题:常见的错误及解决方案,游标和递归sql

浏览次数:191 时间:2019-08-22

DECLARE @UserID INT; --推广员帐号
DECLARE @ProxyID INT; --代理帐号
DECLARE @Score INT=1000; --分数
SELECT
    @UserID = [SpreaderID]
FROM
    [QPAccountsDB].[dbo].[AccountsInfo]
WHERE
    UserID = 5055;
SELECT --查出推广员的代理帐号
        @ProxyID = ProxyID
FROM
        [QPAccountsDB].[dbo].[AccountsInfo]
    LEFT JOIN
        [QPProxyDB].[dbo].[BS_ProxyInfo]
            ON BS_ProxyInfo.account = AccountsInfo.Accounts
WHERE
        UserID = @UserID;
PRINT @ProxyID;
CREATE TABLE #ProxyInfo
    (
        belongsAgent     INT,
        assignProportion TINYINT
    );
WITH cte
AS (   SELECT
           belongsAgent
       FROM
           [QPProxyDB].[dbo].[BS_ProxyInfo]
       WHERE
           ProxyID = @ProxyID
           AND belongsAgent <> -1
       UNION ALL
       SELECT
               a.belongsAgent
       FROM
               [QPProxyDB].[dbo].[BS_ProxyInfo] a
           JOIN
               cte                              b
                   ON a.ProxyID = b.belongsAgent
       WHERE
               a.belongsAgent <> -1)
INSERT #ProxyInfo
    (
        belongsAgent,
        assignProportion
    )
       SELECT
           BS_ProxyInfo.ProxyID,
           assignProportion
       FROM
           cte LEFT JOIN [QPProxyDB].[dbo].[BS_ProxyInfo] ON BS_ProxyInfo.ProxyID = cte.belongsAgent
       ORDER BY
           BS_ProxyInfo.belongsAgent ASC;
---游标更新删除当前数据
---1.声明游标
DECLARE cursor01 CURSOR SCROLL FOR
    SELECT
        *
    FROM
        #ProxyInfo
    ORDER BY
        belongsAgent ASC;
        DECLARE @AllTax INT 
        SET @AllTax =@Score
--2.打开游标
OPEN cursor01;
--3.声明游标提取数据所要存放的变量
DECLARE
    @belongsAgent     INT,
    @assignProportion TINYINT;
--4.定位游标到哪一行
FETCH FIRST FROM cursor01
INTO
    @belongsAgent,
    @assignProportion; --into的变量数量必须与游标查询结果集的列数相同
WHILE @@fetch_status = 0 --提取成功,进行下一条数据的提取操作 
    BEGIN

      SET   @AllTax=@assignProportion*@AllTax/100
UPDATE [QPProxyDB].[dbo].[BS_ProxyInfo] SET allTax =@AllTax WHERE ProxyID=@belongsAgent
        FETCH NEXT FROM cursor01
        INTO
            @belongsAgent,
            @assignProportion; --移动游标
    END;
CLOSE cursor01;
DEALLOCATE cursor01;
DROP TABLE #ProxyInfo;

本节课先对mysql的基本语法初体验。

图片 1

 

操作文件夹(库)

一、错误日志解析:

create database db1 charset utf8;

(1) 【ERROR】1452:无法在外键的表插入参考主键没有的数据

# 查看当前创建的数据库
show create database db1;
# 查看所有的数据库
show databases;

 

alter database db1 charset gbk;

 

drop database db1;

 

 

1452:无法在外键的表插入或更新参考主键没有的数据。由于item_discovery.itemid字段(外键)参考了items.itemid字段(主键),当要在item_discovery表插数据时,如果items表的主键没有对应的数据,则无法插入,报1452错误。此时可以检查参考的表的主键是否有主库对应的数据,如果有,则插入参考的表相应的数据,再开启复制恢复SQL线程。

操作文件(表)

use db1; #切换文件夹

select database(); #查看当前所在文件夹

 

create table t1(id int,name char);

(2) 【ERROR】1032:删除或更新数据,从库找不到记录

查 

图片 2

#查看当前的这张t1表
show create table t1;

# 查看所有的表
show tables;

# 查看表的详细信息
desc t1;

图片 3

 

# modify修改的意思
alter table t1 modify name char(6);
# 改变name为大写的NAME
alter table t1 change name NAMA char(7);

 

# 删除表
drop table t1;

 

 

 1032:删除或更新从库的数据,从库找不到记录。此时,主库的数据是比从库新的,可以采取从库添加相同的数据在开启复制恢复SQL线程。

操作文件内容(记录)

 

 增

# 插入一条数据,规定id,name数据leilei
insert t1(id,name) values(1,"mjj01"),(2,"mjj02"),(3,"mjj03");

(3) 【ERROR】1062:从库插入数据,发生唯一性冲突

 查

select id from db1.t1;
select id,name from db1.t1;
select * from db1.t1; 

 

update db1.t1 set name='zhangsan';
update db1.t1 set name='alex' where id=2;

 

 删

delete from t1;
delete from t1 where id=2;

 1062:从库插入数据,发生唯一性冲突。此时从库已经有相同主键的数据,如果再插入相同主键值的数据则会报错。可以查看主库的改行数据与从库的要插入数据是否一致,如一致则跳过错误,恢复SQL线程,如不一致,则以主库为准,将从库的该行记录删除,再开启复制。

 

如果当前高可用架构为Master-Master,则以下均在从库的操作都必须set sql_log_bin=0,避免从库执行的语句同步到主库(恢复时以主库的数据为准)。

二、怎么解决问题:

1.临时解决方案(业务运行期间不适宜使用数据对比和修复工具)

 

【ERROR】1452:

 

 

 

普通主从复制环境

 

从库:

 

 

主库:

查看主库在出错的相应位置的执行语句,可通过SQL得出当时insert或者update的对应的主键值。

 

 

查询item_discovery的外键约束c_item_discovery_1参考的表items对应主键值的数据行。

 

 

从库:

在items表插入主库查询出来的数据。

 

 

基于GTID复制环境

与普通主从复制环境处理方式相同。

 

【ERROR】1032:

 

 

 

发生1032可能是delete或者update时从库没有对应数据行,可以分两种情况处理:

 

本文由澳门十大赌场最新排名发布于澳门十大赌场,转载请注明出处:常见的错误及解决方案,游标和递归sql

关键词: ag娱乐平台

上一篇:SQLServer修改数据列,MySQL表碎片整理

下一篇:没有了