繁体   English   中英

使用 MYSQL 5.7 中的存储过程来获取和更新

[英]Using stored procedure in MYSQL 5.7 to fetch and update

我有下表..

CREATE TABLE Coupons (
    cid INT(11) PRIMARY KEY,
    coupon_name  VARCHAR(255),
    partner     VARCHAR(255),
    is_active   INT(1)
);
INSERT INTO `table_name`(cid,coupon_name,partner_name,is_active) VALUES (0,'SWIGGYONE','SWIGGY',1);
INSERT INTO `table_name`(cid,coupon_name,partner_name,is_active) VALUES (1,'ZOMATOONE','ZOMATO',1);
INSERT INTO `table_name`(cid,coupon_name,partner_name,is_active) VALUES (2,'SWIGGYONE','SWIGGY',1);
INSERT INTO `table_name`(cid,coupon_name,partner_name,is_active) VALUES (3,'ZOMATOTWO','ZOMATO',1);

我希望从每个合作伙伴那里获取一张 ACTIVE 优惠券并将其 is_active col 更新为 0。我正在使用 MYSQL 5.7

我也希望获取那些 is_active 设置为 0 的记录。

我对 MYSQL 5.7 中使用的事务/@variables/存储过程没有足够的了解

尝试这个:

CREATE PROCEDURE `pr_coupons`()
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
    /** Inactivate the very first coupon **/
    
    UPDATE Coupons
    SET is_active = 0
    WHERE Coupons.cid IN
    (
        SELECT cid from
        (
            SELECT cid
            FROM Coupons
            WHERE Coupons.is_active = 1
            GROUP BY Coupons.partner
        ) AS inner_table
    );
    
    /** Select active coupons **/
    
    SELECT *
    FROM Coupons
    WHERE is_active = 1;
END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM