UPDATE/DELETE in mysql and get the list of affected row ids?

前端 未结 2 462
一整个雨季
一整个雨季 2020-12-09 11:55

Is there an efficient way to get the list of affected row IDs (not the # of affected rows via PHP\'s mysql_affected_rows(), but the actual row ids that were affected) from a

相关标签:
2条回答
  • 2020-12-09 12:24

    try this, it will return the updated ids as "1,2,3....":

    SET @uids := '';
    UPDATE table_name
       SET some_col= 'some_val'
     WHERE some_col= 'some_val'
       AND ( SELECT @uids := CONCAT_WS(',', @uids, id) );
    SELECT TRIM(LEADING ',' FROM @uids);
    
    0 讨论(0)
  • 2020-12-09 12:28

    You can create a Trigger

    Support for triggers is included beginning with MySQL 5.0.2. A trigger is a named database object that is associated with a table, and that activates when a particular event occurs for the table.

    the following code creates a trigger on a table named mytable which has a field id

    CREATE TRIGGER mytable_delete
    AFTER DELETE ON mytable
    FOR EACH ROW SET @deletedIDs = CONCAT_WS(',', @deletedIDs, OLD.id)
    

    notice that OLD refers to deleted row

    once you created a trigger on a table you can use it as follows:

    /* empty parameter defined in CREATE TRIGGER */
    Set @deletedIDs = '';
    /* perform your query */
    DELETE FROM mytable WHERE myotherfield = 'myfilterevalue';
    /* get the parameter */
    SELECT @deletedIDs AS 'Deleted_IDs';
    

    this will return deleted IDs each preceded by a comma in a string

    sql mysql php

    0 讨论(0)
提交回复
热议问题