DELETE в C#
Команда DELETE удаляет строки, прошедшие
WHERE. Без условия она очистит всю
таблицу.
Удаление "id=1" оставляет COUNT(*)
равным 1:
using Microsoft.Data.Sqlite;
using SqliteConnection db = new("Data Source=:memory:");
db.Open();
using (SqliteCommand c = db.CreateCommand())
{
c.CommandText = "CREATE TABLE t (id INT); INSERT INTO t VALUES (1),(2)";
c.ExecuteNonQuery();
}
using (SqliteCommand d = db.CreateCommand())
{
d.CommandText = "DELETE FROM t WHERE id = 1";
d.ExecuteNonQuery();
}
using SqliteCommand q = db.CreateCommand();
q.CommandText = "SELECT COUNT(*) FROM t";
Console.WriteLine(q.ExecuteScalar());
Если включить внешние ключи, строку-родителя
нельзя удалить, пока на неё ссылаются дочерние.
В примере таких связей нет: после удаления
строки с номером 1 остаётся одна
строка.
Создайте таблицу "messages" с пометкой
"archived". Добавьте несколько строк,
удалите те, где пометка равна 1, и
выведите, сколько сообщений осталось.