powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Ограничение на изменение поля (SQL)
6 сообщений из 6, страница 1 из 1
Ограничение на изменение поля (SQL)
    #38807626
vezunchik95
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Имеется таблица parts, нужно на SQL выгрузить из базы данных три поля, значения одного из которых находятся в пределах от 0 до 30 и поставить после вывода запрет на ограничение одного из других полей: ему можно задавать значения c помощью команды UPDATE только от 5 до 35, иначе выводить ошибку ERROR.

Написал вот так:

Код: sql
1.
2.
SELECT Name, Cost, Onorder FROM parts WHERE Onorder BETWEEN 0 AND 30
ALTER TABLE parts ALTER Cost SET CHECK Cost > 5 AND Cost < 35 ERROR "ERROR"



Если задаю текст ошибки, то он просто выводит текст этой ошибки после изменения команды, и ограничения не выставляются. Если убираю ERROR, то выводит "Field COST validation type is violated". Синтаксис вроде соблюден, почему не выполняется команда ALTER TABLE и можно ли еще каким-то образом поставить ограничение? Вообще абсолютный новичок и чайник в этом.
...
Рейтинг: 0 / 0
Ограничение на изменение поля (SQL)
    #38807934
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Поле Cost - точно числовое?
2. Ограничение не может быть установлено, если условие не выполняется для существующих записей. В данном случае - если есть записи с Cost<=5 или Cost>=35.
...
Рейтинг: 0 / 0
Ограничение на изменение поля (SQL)
    #38808196
vezunchik95
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SoftwareBoy, Да, оно числовое, но вот про второе условие не знал, таблица уже заполнена самыми разными числами, поэтому и не работает... Есть еще какие-то варианты, команды, как это можно реализовать?
...
Рейтинг: 0 / 0
Ограничение на изменение поля (SQL)
    #38809216
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vezunchik95, что реализовать?
1. Больше не давать пользователю вводить неправильные значения Cost? Написать соответствующее условие в форме ввода.
2. Не дать самому себе записать неправильные значения Cost командой UPDATE из другой таблицы? Написать соответствующее условие в команде UPDATE.
3. Запретить любому приложению запись в таблицу неправильных значений Cost? Поделить таблицу на две по заданному условию и установить ограничение только в той половине, где находятся правильные значения; в дальнейшем обновлять только эту половину.
...
Рейтинг: 0 / 0
Ограничение на изменение поля (SQL)
    #38809780
vezunchik95
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SoftwareBoy,
Да, скорее 1. После того, как я выгрузил командой SELECT нужные записи, нужно задать ограничения уже в этой новой части таблицы, чтобы никто не мог отредактировать поле Cost иначе, кроме как от 5 до 35. Если он попытается это сделать, ему должно выйти сообщение ERROR.
...
Рейтинг: 0 / 0
Ограничение на изменение поля (SQL)
    #38824598
Петр К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я вас правильно понимаю, в существующем массиве данных ничего изменять не надо, но для любых новых изменений данных надо включить ограничение. Если это так, то вы неверно налагаете новое ограничение на таблицу в команде ALTER TABLE. Вам надо использовать нечто вроде ALTER TABLE ADD CONSTRAINT ... WITH NOCHECK. Опция NOCHECK в конце команды ALTER TABLE означает, что новое добавленное ограничение не будет применяться к уже существующим данным, а только к вновь введенным и/или к изменениям существующих.
Хотя делать так очень не рекомендуется, оставляя этот вариант для крайних случаев. Оптимизатор запросов не рассматривает никакие ограничения, добавленные в определение таблицы, если они добавлялись с опцией NOCHECK. Такие ограничения будут учитываться только с момента, когда они будут повторно включены с использованием инструкции ALTER TABLE <...> CHECK CONSTRAINT ALL.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Ограничение на изменение поля (SQL)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]