Связи в SQL по полю и названию таблицы
Можно ли дефолтным sql делать связь между полем и названием таблицы ?
Т.е. например
— table 1
| table_name |
| users |
— users
| id | name |
| 1 | .......... |
Если я удаляю запись в table1, то удаляется таблица, имя которой прописано в table_name
Или только через логику php ?
Ответы (1 шт):
Автор решения: Kunoichi
→ Ссылка
Вы можете использовать SQL запрос, который удалит таблицу соответствующую удаляемой строчке или создать триггер, который будет удалять таблицу при любом запросе на удаление строки:
SQL запрос может выглядеть так:
DECLARE @tableName varchar(MAX) = 'users'
DELETE FROM [Table1] WHERE [table_name] = @tableName;
DECLARE @cmd varchar(MAX)
SET @cmd = 'DROP TABLE [' + @tableName + ']';
EXEC(@cmd)
Триггер может выглядеть так:
CREATE TRIGGER Table1_delete
AFTER DELETE
ON Table1
FOR EACH ROW
BEGIN
DECLARE @cmd varchar(MAX)
SET @cmd = 'DROP TABLE [' + OLD.[table_name] + ']';
EXEC(@cmd)
END;
Могу ошибаться в синтаксисе запросов для MariaDB, но полагаю смысл ясен