sql >> Databáze >  >> RDS >> Mysql

Jak změnit výchozí hodnotu sloupce pomocí procedury

Musíte použít Dynamické SQL zde jako Default klauzule v Alter Table nebude schopen vyřešit hodnotu proměnné:

DELIMITER $$
CREATE PROCEDURE updateDefaultUserRole(
    IN rid_in INT
) BEGIN

    -- generate the query string for Alter Table
    SET @alter_query_str = CONCAT('ALTER TABLE _users
                                   MODIFY rid INT(255) NOT NULL 
                                   DEFAULT ', 
                                  rid_in); -- Modify the columns default value
    -- prepare the query
    PREPARE stmt FROM @alter_query_str;
    -- execute the query
    EXECUTE stmt;
    -- deallocate the query
    DEALLOCATE PREPARE stmt;

    UPDATE _users SET rid = rid_in 
    WHERE rid < rid_in; -- Update all entries lower than the role ID.

END $$
DELIMITER ;



  1. zobrazení dat z databáze do html tabulky

  2. ORA-01843 není platný měsíc - Porovnání dat

  3. org.postgresql.util.PSQLException:Velké objekty nelze použít v režimu automatického potvrzení

  4. sql server neplatný název objektu - ale tabulky jsou uvedeny v seznamu tabulek SSMS