file{Prop:SQL}='INSERT INTO...'

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

file{Prop:SQL}='INSERT INTO...'

Сообщение Yufil »

А где видно, что ключ первичный, об этом надо торжественно заявить!
И при создании записи первичный ключ не должен быть пустой строкой, иначе мы никогда не найдём эту запись
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

file{Prop:SQL}='INSERT INTO...'

Сообщение gopstop2007 »

kreator писал(а): 10 Декабрь 2019, 9:32 Раз MS не даёт "before" триггеры, то должна работать "дефолтная схема"
Зачем нужны "before" триггеры при insert :), создайте как положено, а потом в after триггер измените как надо )
Последний раз редактировалось gopstop2007 10 Декабрь 2019, 11:04, всего редактировалось 1 раз.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

file{Prop:SQL}='INSERT INTO...'

Сообщение kreator »

Yufil писал(а): 10 Декабрь 2019, 10:16 А где видно, что ключ первичный, об этом надо торжественно заявить!
morkovin привёл часть скрипта на создание таблицы. Неужели Вы сомневаетесь, что поле "mid" первичный, а поле "uid_fk" внешний ключ?
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

file{Prop:SQL}='INSERT INTO...'

Сообщение kreator »

gopstop2007 писал(а): 10 Декабрь 2019, 11:00
kreator писал(а): 10 Декабрь 2019, 9:32 Раз MS не даёт "before" триггеры, то должна работать "дефолтная схема"
Зачем нужны "before" триггеры :), создайте как положено, а потом в after триггер измените как надо )
Баттл? А как положено? Я соглашусь, при добавлении записи можно настроить поля по "дефолту". Как настроить при изменении? Типичный пример. Мне нужно записывать дату, время изменения. Не вести журнал изменений в отдельной таблице, а в этой же. В ФБ я сделаю так в before триггере:

Код: Выделить всё

new."datetime" = current_datetime
И всё. Какие манипуляции надо провести в MS SQL? Снова апдейтить эту же запись. Гемор какой-то.
А если мне нужно сравнить поля на "было/стало"? В ФБ:

Код: Выделить всё

if new."id_fk"<>old."id_fk"
  бла-бла-бла ;
В MS надо запросы сделать по таблицам Inserted и Deleted. Зачем столько движух? К триггеру "before" это не относится напрямую. Просто к отсутствию "before" триггера добавляется отсутствие псевдозаписей old и new.
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

file{Prop:SQL}='INSERT INTO...'

Сообщение gopstop2007 »

kreator писал(а): 10 Декабрь 2019, 11:27

Код: Выделить всё

new."datetime" = current_datetime
не понял, а чем CURRENT_TIMESTAMP или NOW не подошло? триггер зачем?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

file{Prop:SQL}='INSERT INTO...'

Сообщение kreator »

А как без триггера? "Ручные" запросы на апдейт, как правило, не пользую. По возможности обхожусть стандартными вещами. К тому же я апологет переноса всего что возможно на сервер :D .
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

file{Prop:SQL}='INSERT INTO...'

Сообщение gopstop2007 »

kreator писал(а): 10 Декабрь 2019, 17:11А как без триггера? "Ручные" запросы на апдейт, как правило, не пользую. По возможности обхожусть стандартными вещами. К тому же я апологет переноса всего что возможно на сервер :D .
на стороне сервера, отлично, и я о том же :) поле как timestamp не рассматривается?
Например, правда в Mysql:

Код: Выделить всё

CREATE TABLE `product` (
  `PROD_ID` int(11) NOT NULL AUTO_INCREMENT,
  ...	
  `DATE_UPD` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`PROD_ID`)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

file{Prop:SQL}='INSERT INTO...'

Сообщение kreator »

Вот в ФБ нет конструкции "default on update". В каких-то сценариях такая конструкция была бы полезна. Надо будет разработчиков попытать на этот счёт.
We are hard at work… for you. :)
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

file{Prop:SQL}='INSERT INTO...'

Сообщение porutchik »

как то в конце 90-х попался шаблон от ковбоев про перенос приложения под sql из 5 шагов. В тот момент тестил мелкомягкую 7-ку. Пришлось кое-что допиливать в шаблон. Потом мучил эмбаркадеро еще разные вещи довнес. Периодически добавлялись создание view, обработка initial value, validity check, допиливание конверторов для переноса. Однобокая такая заточка под переезд на мелкомягкий sql. Если кого еще интересует эта тема - могу закинуть
Rimas
Ветеран
Сообщения: 496
Зарегистрирован: 07 Ноябрь 2005, 15:48
Откуда: Литва

file{Prop:SQL}='INSERT INTO...'

Сообщение Rimas »

Если надо генерить GUID на сервере, то и генери, но просто вытаскивай его отдельно типа select newid() и записывай в поле первичного ключа в эмвэдэ "FieldPriming on Insert". Все будет работать в штатном режиме.
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

file{Prop:SQL}='INSERT INTO...'

Сообщение porutchik »

Rimas писал(а): 21 Декабрь 2019, 11:41Если надо генерить GUID на сервере, то и генери, но просто вытаскивай его отдельно типа select newid()
если идет речь о мелкомягких, то я бы лучше оринтировался на Scope_Identity()
Ответить