Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
09.11.2017, 17:07
|
|||
---|---|---|---|
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
Процедура (Delphi) составляет в цикле запрос "UPDATE OR INSERT INTO ...." Как понять/определить, что то или иной поле является readonly? Я вижу, что FibPlus умеет генерировать правильный запрос, где нет вычисляемых полей, где нет полей, которые "пришли" из JOIN таблицы. Чтобы было понятнее. Есть запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
FibPlus генерирует: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Нет полей TYPE_NAME и PHONES_LIST. Но у меня нет первичного SQL запроса, т.к. я выполняю импорт из XML файла. В XML файле набор всех полей, в том числе и TYPE_NAME, и PHONES_LIST. И вот нужно как-то понять/определить, что TYPE_NAME и PHONES_LIST импортировать не надо. Доступ к базе, куда нужно импортировать данные, у программы есть. Firebird 2.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2017, 17:14
|
|||
---|---|---|---|
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
X11, вычитать из базы структуру таблицы и сравнить поля не предлагать? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2017, 17:21
|
|||
---|---|---|---|
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
Ну почему не предлагать? А как понять, что поле не просто присутствует, но оно только для чтения? В таблице есть поле, например, PHONES_LIST, но оно вычисляемое. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2017, 17:42
|
|||
---|---|---|---|
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
X11Ну почему не предлагать? А как понять, что поле не просто присутствует, но оно только для чтения? В таблице есть поле, например, PHONES_LIST, но оно вычисляемое. Это подтянутся более знающие и подскажут зы. насколько я помню RDB$FIELDS.RDB$COMPUTED_SOURCE но возможно я и ошибаюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.11.2017, 18:20
|
|||
---|---|---|---|
|
|||
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
X11Я вижу, что FibPlus умеет генерировать правильный запросфибы идут в исходниках, глянь как они это делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2017, 13:32
|
|||
---|---|---|---|
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
Там черт ногу сломит ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2017, 13:36
|
|||
---|---|---|---|
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
Я нешёл RDB$RELATION_FIELDS. RDB$UPDATE_FLAG ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2017, 13:49
|
|||
---|---|---|---|
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
X11FROM APART A LEFT JOIN TYPES T ON A.ID_TYPE = T.ID Беда в том, что select - слишком гибкий инструмент. Он может читать данные из таблиц, из вьюх, из процедур, из внешних таблиц и т.д. Кроме столбцов там могут быть выражения, подзапросы и т.д. Причем приложение часто не знает откуда какое значение приползёт, на какие объекты БД будетс сылаться запрос (выше "TYPES T" - это что, таблица, вьюха, процедура? запрос этого не знает и знать не может, только сервер) Короче, IMHO, надо запросу делать Prepare и когда сервер вернет подготовленные данные (информацию как создавать и разбирать буферы в памяит для чтения строк) - уже в этом ответе смотреть где там что, где обновляемое, а где read-only. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.11.2017, 20:32
|
|||
---|---|---|---|
|
|||
Сотавление SQL запроса insert и readonly-поля |
|||
#18+
m7mX11Ну почему не предлагать? А как понять, что поле не просто присутствует, но оно только для чтения? В таблице есть поле, например, PHONES_LIST, но оно вычисляемое. Это подтянутся более знающие и подскажут зы. насколько я помню RDB$FIELDS.RDB$COMPUTED_SOURCE но возможно я и ошибаюсь Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=40&mobile=1&tid=1561344]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 174ms |
0 / 0 |