Удалите из двух таблиц в одном запросе

Мы используем C# SHA1CryptoServiceProvider

print(SHA1CryptoServiceProvider sHA1Hasher = new SHA1CryptoServiceProvider();
        ASCIIEncoding enc = new ASCIIEncoding();

        byte[] arrbytHashValue = sHA1Hasher.ComputeHash(enc.GetBytes(clearTextPW));
        string HashData = System.BitConverter.ToString(arrbytHashValue);
        HashData = HashData.Replace("-", "");
        if (HashData == databaseHashedPassWO)
        {
            return true;
        }
        else
        {
            return false;
        });

)

71
задан Luis Reinstate Monica 31 October 2019 в 10:51
поделиться

3 ответа

Разве вы не можете просто разделить их точкой с запятой?

Delete from messages where messageid = '1';
Delete from usersmessages where messageid = '1'

ИЛИ

Просто используйте INNER JOIN , как показано ниже

DELETE messages , usersmessages  FROM messages  INNER JOIN usersmessages  
WHERE messages.messageid= usersmessages.messageid and messages.messageid = '1'
121
ответ дан 24 November 2019 в 12:52
поделиться

Вы должны либо создать FOREIGN KEY с помощью ON DELETE CASCADE :

ALTER TABLE usersmessages
ADD CONSTRAINT fk_usermessages_messageid
FOREIGN KEY (messageid)
REFERENCES messages (messageid)
ON DELETE CASCADE

, либо сделать это с помощью двух запросов в транзакции:

START TRANSACTION;;

DELETE
FROM    usermessages
WHERE   messageid = 1

DELETE
FROM    messages
WHERE   messageid = 1;

COMMIT;

Однако транзакция влияет только на таблицы InnoDB .

13
ответ дан 24 November 2019 в 12:52
поделиться

У вас есть два варианта:

Во-первых, выполните два оператора внутри транзакции:

BEGIN;
  DELETE FROM messages WHERE messageid = 1;
  DELETE FROM usermessages WHERE messageid = 1;
COMMIT;

Или вы можете настроить ON DELETE CASCADE с внешним ключом. Это лучший подход.

CREATE TABLE parent (
  id INT NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE child (
  id INT, parent_id INT,
  FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
);

Подробнее о ON DELETE CASCADE можно прочитать здесь .

7
ответ дан 24 November 2019 в 12:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: