Перейти к содержимому

Как удалить ограничение в sql

  • автор:

Удаление проверочного ограничения

Вы можете удалить проверочные ограничения в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Удаление проверочного ограничения снимает ограничения на значения данных, допустимые для столбца или столбцов, включенных в выражение ограничения.

В этом разделе

  • Перед началом работыБезопасность
  • Удаление проверочного ограничения с использованием:Среда SQL Server Management StudioTransact-SQL

Перед началом

Безопасность

Разрешения

Требуется разрешение ALTER на таблицу.

Использование среды SQL Server Management Studio

Удаление проверочного ограничения
  1. В Обозревателе объектовразверните таблицу с проверочным ограничением.
  2. Разверните раздел Ограничения.
  3. Щелкните ограничение правой кнопкой мыши и выберите Удалить.
  4. В диалоговом окне Удаление объекта нажмите кнопку ОК.

Использование Transact-SQL

Удаление проверочного ограничения
  1. В обозревателе объектовподключитесь к экземпляру компонента Компонент Database Engine.
  2. На стандартной панели выберите пункт Создать запрос.
  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.
ALTER TABLE dbo.DocExc DROP CONSTRAINT CHK_ColumnD_DocExc; GO 

Дополнительные сведения см. в разделе ALTER TABLE (Transact-SQL).

ALTER TABLE — изменение таблицы в SQL

Рассказываем о команде ALTER TABLE и учим вносить с ее помощью изменения в таблицы и столбцы.

Эта инструкция — часть курса «MySQL для новичков».

Смотреть весь курс

Введение

ALTER TABLE — один из самых незаменимых инструментов в работе с базами данных SQL. В этой статье мы рассмотрим SQL оператор ALTER TABLE и его применение. Узнаем, как добавить или удалить поля с помощью этого инструмента, и рассмотрим различные примеры его использования. В данной статье мы не будем рассматривать MS SQL и остановимся на синтаксисе наиболее популярной версии — MySQL.

Синтаксис оператора ALTER TABLE в SQL

Синтаксис оператора ALTER TABLE выглядит следующим образом:

ALTER TABLE название_таблицы [WITH CHECK | WITH NOCHECK]

Из этой записи мы видим, что сценариев применения данной команды достаточно много. Давайте рассмотрим их. В качестве примера мы будем использовать базу данных slcbookshelf, которую мы создавали в статье о первичных и внешних SQL ключах.

use slcbookshelf; 

Добавление столбца в таблицу (ADD COLUMN)

Сейчас наша таблица выглядит следующим образом:

mysql> DESC books; +---------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+-------+ | book_id | int | NO | | NULL | | | book_name | varchar(255) | NO | | NULL | | | book_category | varchar(255) | YES | | NULL | | +---------------+--------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) 

Давайте добавим в нашу таблицу новый столбец, в котором будет отображаться автор каждой книги:

ALTER TABLE books ADD author NVARCHAR(50) NOT NULL; 

Данным запросом мы создали в нашей таблице новый столбец authors с типом NVARCHAR и длиной в 50 символов, который не может принимать пустое значение. Если мы не знаем автора произведения, тогда наша команда будет иметь такой вид:

ALTER TABLE books ADD author NVARCHAR(50) NOT NULL DEFAULT 'Неизвестен'; 

Теперь для существующих данных, для которых не заполнен столбец author, значение по умолчанию будет «Неизвестен».

Переименование столбца и таблицы

Переименование столбца (RENAME)

С помощью ALTER TABLE можно переименовать существующий столбец. Для этого выполните команду:

ALTER TABLE books RENAME COLUMN author TO authors; 

Переименование таблицы (RENAME)

При помощи ALTER TABLE можно переименовать таблицу. Выполняем запрос:

ALTER TABLE books RENAME TO books_selectel; 

Удаление столбца (DROP)

Чтобы удалить столбец из таблицы с помощью ALTER TABLE, требуется выполнить следующий запрос:

ALTER TABLE books DROP COLUMN authors; 

Изменение столбца (ALTER COLUMN)

Иногда бывают случаи, когда необходимо изменить уже созданный ранее столбец. Это действие можно выполнить с помощью команды ALTER TABLE. Для изменения существующего столбца необходимо выполнить такой запрос:

ALTER TABLE books ALTER COLUMN book_category VARCHAR(200); 

В данном примере мы изменили максимальное количество символов, которое может использоваться в полях столбца book_category с 255 до 200.

Также с помощью ALTER TABLE можно сделать действие сразу с несколькими столбцами. Чтобы изменить сразу несколько столбцов, вам потребуется использовать эту команду:

ALTER TABLE books MODIFY book_category VARCHAR(200), MODIFY book_name VARCHAR(200), . ; 

Таким запросом мы изменили сразу два столбца: book_category и book_name.

Изменение типа столбца

При помощи ALTER TABLE можно изменить тип столбца в таблице SQL. Изменение типа существующего столбца осуществляется при помощи команды:

ALTER TABLE books ALTER COLUMN book_category NVARCHAR(200); 

Выполнив эту команду, мы изменили тип book_category на NVARCHAR(200).

Добавление первичного и внешнего ключей при помощи ALTER TABLE

Вы можете определить существующий столбец в таблице в качестве первичного ключа с помощью команды ALTER TABLE. Запрос, добавляющий в таблицу первичный ключ, будет выглядеть следующим образом:

ALTER TABLE books ADD PRIMARY KEY (book_id); 

Аналогично при помощи ALTER TABLE можно добавить внешний ключ таблицы. Чтобы создать внешний ключ для таблицы MySQL выполните команду:

ALTER TABLE books ADD FOREIGN KEY (author_id) REFERENCES authors(author_id); 

В результате выполнения этой команды поле author_id в таблице books будет внешним ключом для аналогичного поля в таблице authors.

Работа с ограничениями

Ограничения — специальные правила, которые применяются к таблице, чтобы ограничить типы данных в таблице. Ограничения очень важны, так как их правильное применение помогает обеспечить целостность данных в таблицах и наладить стабильную работу базы. Давайте рассмотрим одно из таких ограничений — ограничение CHECK. Применяя ограничения CHECK к столбцу таблицы, мы создаем правило, по которому при добавлении данных СУБД будет автоматически проверять их на соответствии заданным правилам.

Создание ограничения

Например, если нам необходимо, чтобы все клиенты в базе данных Customers имели возраст больше 21 года, мы можем установить следующее ограничение:

ALTER TABLE Customers ADD CHECK (Age > 21); 

При применении такого ограничения стоит учитывать, что если в столбце уже существуют данные, не соответствующие ограничению, то команда будет выполнена с ошибкой. Чтобы избежать подобного поведения, вы можете добавить ограничение со значением WITH NOCHECK. Таким образом, текущие значения столбца не вызовут ошибок при выполнении запроса при несоответствии ограничению:

ALTER TABLE Customers WITH NOCHECK ADD CHECK (Age > 21); 

Добавление ограничений с именами

Так как ограничений в таблицах может быть много, добавление имен к ограничениям может в значительной мере упростить будущую работу с таблицей. Создать имя для ограничения можно при помощи оператора CONSTRAINT:

ALTER TABLE Customers ADD CONSTRAINT Check_Age_Greater_Than_Twenty_One CHECK (Age > 21); 

Удаление ограничений

ALTER TABLE можно пользоваться и для удаления ограничений. Для удаления существующих ограничений необходимо выполнить следующую команду:

ALTER TABLE Customers DROP Check_Age_Greater_Than_Twenty_One; 

После выполнения этой команды ограничение перестанет применяться при добавлении новых данных в столбец.

Заключение

В данной статье мы с вами узнали что такое ALTER TABLE, рассмотрели работу с этой командой и научились вносить с ее помощью изменения в таблицы и столбцы, а также рассмотрели несколько примеров использования данной команды, которые сильно упростят будущую работу с базами данных.

Сброс пароля root в MySQL

Как удалить ограничение в sql

Кейсы бывают разные. Я расскажу о том, как удалить ограничение зная имя таблицы. Общий вид запроса такой:

ALTER TABLE table_name DROP CONSTRAINT constraint_name; 

А вот конкретный пример:

ALTER TABLE order_details DROP CONSTRAINT order_unique; 

Записная книжка программиста-новичка, C#, SQL, PHP и все-все-все

Я ведь это уже делал, но хрен теперь найдешь тот кусок кода, гуглим снова… Где бы найти простое и понятное руководство для начинающего, а не тонкости для мега-гуру?

Главная→Transact SQL / MS SQL→ Удаляем default-ограничение (constraint) в Transact Sql

Рубрики

Свежие записи

  • Вырезаем числовую часть из начала строки в transact-sql
  • Пул соединений с базой данных в ADO.NET / OleDb — как избежать проблем с утечкой соединений в ASP.NET (перевод)
  • ASP .Net MVC, JQuery и AJAX — отсылаем данные на сервер
  • Разделитель тысяч и дробной части для decimal
  • Создаем расширенный Control в WinForms наследуясь от существующего
  • Вставка строк и изменение границ ячеек в Excel Interop из C#
  • Как прочитать данные из удаленного DataRow в DataTable
  • Проблемы с кодировкой при копировании русского текста из MS SQL Studio в Outlook/Word/Office
  • Как проверить, существует ли таблица в MS SQL Server перед удалением/созданием
  • Очень просто.
  • Получаем выбранные строки DataGridView, в котором выбраны только ячейки
  • Ошибка в коде привела к убыткам в 476 миллионов долларов и банкротству компании
  • Отслеживаем изменения выбранного значения в колонке ComboBox DataGridView (DataGridViewComboBoxColumn)
  • Excel 2010, Windows 7, два монитора и «ошибка при направлении команды приложению»
  • Удаляем default-ограничение (constraint) в Transact Sql

Свежие комментарии

  • Kirill к записи Самоучитель по C# для начинающих. 01. Основы языка, переменные, логика, циклы.
  • как избавиться от чувства вины к записи Как добавить строку/текст в начало файла в C# и .Net
  • DannyLef к записи Полезные расширения-плагины для WordPress
  • как избавиться от чувства вины к записи Как добавить строку/текст в начало файла в C# и .Net
  • gweg2ehgwEHERWQHQ к записи Простейшее диалоговое окно-вопрос (MessageBox) в WindowsForms

Архивы

Мета

Удаляем default-ограничение (constraint) в Transact Sql

Опубликовано 14.10.2013 автором Ведомир

Сгенерировать sql код для удаления default-ограничения не зная его имени, но зная таблицу и колонку, можно следующей командой (вынесена в отдельную функцию):

create -- alter function dbo.create_delete_default_command(@table_name varchar(256), @col_name varchar(256)) returns varchar(1000) as begin declare @delete_command varchar(1000) select @delete_command = 'ALTER TABLE ' + @table_name + ' drop constraint ' + defcon.name from sys.tables join sys.default_constraints defcon on defcon.parent_object_id = sys.tables.object_id join sys.columns as scol on scol.object_id = sys.tables.object_id and scol.column_id = defcon.parent_column_id where sys.tables.name = @table_name and scol.name = @col_name return @delete_command end
select dbo.create_delete_default_command('TEST_TABLE', 'TEST_COLUMN')

В принципе можно удалять ограничение сразу

execute (@delete_command)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *