Связи в 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, но полагаю смысл ясен

→ Ссылка