Указанный в запросе токен продолжения искажен в cosmosDB

Для меня триггерный подход сработал лучше всего, но я нашел подлость с подходом. Рассмотрим основной триггер, чтобы установить поле даты в текущее время на вставке:

CREATE TRIGGER myTable_OnInsert BEFORE INSERT ON `tblMyTable`
    FOR EACH ROW SET NEW.dateAdded = NOW();

Обычно это замечательно, но скажите, что вы хотите установить поле вручную с помощью инструкции INSERT, например:

INSERT INTO tblMyTable(name, dateAdded) VALUES('Alice', '2010-01-03 04:30:43');

Что происходит, так это то, что триггер немедленно перезаписывает ваше предоставленное значение для поля, и поэтому единственный способ установить не текущее время - это продолжение инструкции UPDATE - yuck! Чтобы переопределить это поведение при предоставлении значения, попробуйте этот слегка модифицированный триггер с помощью оператора IFNULL:

CREATE TRIGGER myTable_OnInsert BEFORE INSERT ON `tblMyTable`
    FOR EACH ROW SET NEW.dateAdded = IFNULL(NEW.dateAdded, NOW());

Это дает лучшее из обоих миров: вы можете указать значение для столбца даты, и оно будет принять, и в противном случае оно будет по умолчанию текущим временем. Это все еще гетто относительно чего-то чистого, как DEFAULT GETDATE () в определении таблицы, но мы приближаемся!

0
задан Tyler Roper 16 January 2019 в 05:06
поделиться

1 ответ

Найден ответ. При передаче этого параметра его следует передавать как тип 'String' и без кавычек, содержащих значение. Эта проблема возникает только при запуске с портала Azure.

0
ответ дан Learner 16 January 2019 в 05:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: