sql >> Database >  >> RDS >> Mysql

De standaardwaarde van een kolom wijzigen met behulp van een procedure

U moet Dynamische SQL hier, als Default clausule in de Alter Table zal de variabele waarde niet kunnen oplossen:

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. Juli 2016 PSU kan isqora . niet maken

  2. Maak een back-up van een mysql-database en download als een bestand

  3. SQL Server:handige tips voor beginners

  4. Hoe PostgreSQL 12 op Fedora 33 te installeren