|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста, в чем ошибка моя? Пусть есть таблица [Table1] с полем [id],[name]. Создаю триггер, который должен выполнять следующую логику: если в таблице, в которую добавляется поле, присутствует поле с таким же значением, то новое поле не вводится, в противном случае, новое поле добавляется в таблицу. Тригер имеет код следующий: Код: plaintext 1. 2. 3. 4. 5. 6.
Когда добавляю новую запись в таблицу Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 14:30 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
А чем тебя не устраивает команда REPLACE? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 17:59 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
И вообще, прежде чем возится с триггерами почитай сначала возможности ON CONFLICT http://www.sqlite.org/lang_conflict.html ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 18:00 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
С replace не сталкивался, читаю, пробую... Создаю таблицу: Код: plaintext 1. 2. 3.
Вопрос по первому посту не исчерпан, почему при проверки условия "WHEN TABLE1.Name=new.Name" в ответ ошибка с тем что не существует TABLE1.Name ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 19:59 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
egorbachurinС replace не сталкивался, читаю, пробую... Плохо читаешь. Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 20:32 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
egorbachurinВопрос по первому посту не исчерпан, почему при проверки условия "WHEN TABLE1.Name=new.Name" в ответ ошибка с тем что не существует TABLE1.NameСкорее всего в том, что [TABLE1] и TABLE1 это разные имена. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 20:35 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
White OwlegorbachurinС replace не сталкивался, читаю, пробую... Плохо читаешь. Код: plaintext 1. 2. 3.
Собственно я правильно прочитал и понял... Я именно так и выполнял, за исключением только одного, без принудительного присваивания индекса (который и так автоинкремент): Код: plaintext
White OwlegorbachurinВопрос по первому посту не исчерпан, почему при проверки условия "WHEN TABLE1.Name=new.Name" в ответ ошибка с тем что не существует TABLE1.NameСкорее всего в том, что [TABLE1] и TABLE1 это разные имена. В любом случае выдет ошибку no such column. Здесь не понятно вовсе причины. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2010, 21:27 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
Опечатка Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 07:37 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
Переформулирую вопрос. Как проверять вводимые данные? В смысле, сравнивать вводимое с существующим в таблице. Думаю корректно звучит ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 14:34 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
Чудес не бывает... Банальная ошибка с моей стороны. Столбцы в разных таблицах имели одинаковые имена, вот и не выполнялся запрос ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 18:24 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
egorbachurinWhite Owlпропущено... Плохо читаешь. Код: plaintext 1. 2. 3.
Собственно я правильно прочитал и понял... Я именно так и выполнял, за исключением только одного, без принудительного присваивания индекса (который и так автоинкремент): Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 19:32 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
egorbachurinПереформулирую вопрос. Как проверять вводимые данные? В смысле, сравнивать вводимое с существующим в таблице. Думаю корректно звучитСделать уникальный индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 19:33 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
White OwlНу а если ты не указываешь первичный ключ принудительно, откуда сервер узнает что новая строка должна заменить уже существующую? Для этого и думал создать тригер ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 20:31 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
egorbachurinWhite OwlНу а если ты не указываешь первичный ключ принудительно, откуда сервер узнает что новая строка должна заменить уже существующую? Для этого и думал создать тригерХорошо, а триггер откуда это узнает? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 21:36 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
White Owlпервичный ключ принудительно... Он же автоинкремент, если я ни чего не путаю ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 21:39 |
|
Формирование условия для триггера
|
|||
---|---|---|---|
#18+
egorbachurinWhite Owlпервичный ключ принудительно... Он же автоинкремент, если я ни чего не путаюПравильно, автоинкримент. Это удобно если надо просто добавлять значения. Но ты их хочешь не только добавлять, но и менять или отказываться от изменения если запись уже есть. А значит простой автоинкремент уже не годится. Тебе нужен не абстрактный ключ а основаный на реальных данных. То есть полностью контролируемый и легко предсказуемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2010, 21:56 |
|
|
start [/forum/topic.php?fid=54&fpage=24&tid=2009260]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 136ms |
0 / 0 |