sql >> Database teknologi >  >> RDS >> Mysql

Sådan ændres standardværdien for en kolonne ved hjælp af en procedure

Du skal bruge Dynamisk SQL her som Default klausul i Alter Table vil ikke være i stand til at løse variabelværdien:

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. MySQL ved hjælp af Sum og Case

  2. Udløs før sletning af MySql

  3. Hvorfor skal jeg bruge int i stedet for en byte eller short i C#

  4. Kan MySQL Nested Select returnere liste over resultater