Sqlite: возможно ли создать триггер со случайным именем (или без имени)? - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно создать триггер динамически, и в будущем мне не нужно его сбрасывать.Итак, мне нужен код для этого.

Вероятно

CREATE TRIGGER random() BEFORE INSERT... (with random name)

Или

CREATE TRIGGER BEFORE INSERT... (without name)

Могу ли я сделать это в sqlite shell?Я знаю, это плохая практика, но это эксперимент.

Спасибо.

1 Ответ

0 голосов
/ 06 декабря 2018

Боюсь, это невозможно.Согласно документации , trigger-name является атомарной синтаксической единицей (из нее видно, что она строчная, в прямоугольнике с закругленными углами), в том смысле, что она не может быть построена путем вычисления сложных выражений.Вам разрешено вводить здесь только литерал (кстати, с table-name и index-name, см. здесь и здесь ).

Что вы можетеdo вместо этого динамически создает всю строку запроса, перед передачей ее SQLite.Например, если вы взаимодействуете с SQLite через Python, вы можете написать что-то вроде:

tableName = "someRandomString" 
db.execute("CREATE TABLE " + tableName + " (A INT, B TEXT)")

Или, если вы используете командную строку Windows:

set tableName=someRandomString
sqlite3.exe test.sqlite "CREATE TABLE %tableName% (A INT, B TEXT)"

Я знаю, что вы спрашивалио триггерах, а не таблицах, но с точки зрения вашего вопроса это в основном одно и то же, а синтаксис создания таблиц короче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...