loading..
Русский    English
16:50
листать

Значения по умолчанию

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

Пусть для нашей базы данных наибольшая часть моделей представляет собой ПК. Давайте установим для столбца type значение по умолчанию ‘PC’. Добавить значение по умолчанию можно с помощью оператора ALTER TABLE. Согласно стандарту, оператор для нашего примера имел бы вид:

  1. ALTER TABLE Product
  2. ALTER COLUMN "type" SET DEFAULT 'PC';

Однако  Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server не поддерживает в данном случае стандартный синтаксис; в диалекте T-SQL аналогичную операцию можно выполнить так:

  1. ALTER TABLE Product
  2. ADD DEFAULT 'PC' FOR type;

Теперь при добавлении в таблицу Product модели ПК мы можем не указывать тип.

  1. INSERT INTO Product(maker, model) VALUES('A', '1124');

Заметим, что значением по умолчанию может быть не только литеральная константа, но и функция без параметров. В частности, мы можем использовать функцию CURRENT_TIMESTAMP, возвращающую текущее значение даты-времени. Давайте добавим столбец в таблицу Product, который будет содержать время, соответствующее выполнению операции добавления модели в БД.

  1. ALTER TABLE Product
  2. ADD add_date DATETIME DEFAULT CURRENT_TIMESTAMP;

Добавим модель 1125 производителя А

  1. INSERT INTO Product(maker, model) VALUES('A', '1125');
и посмотрим на результат

  1. SELECT * FROM Product WHERE model ='1125';

maker    model    type    add_date
A    1125    PC    2015-08-24 22:21:23.310

Замечания.

1.    Если значение по умолчанию не указано, то подразумевается default NULL, т.е. NULL-значение. Естественно, это значение по умолчанию может быть использовано только в том случае, если на столбце нет ограничения NOT NULL.

2.    Если добавить столбец в существующую таблицу, то он, согласно стандарту, будет заполнен значениями по умолчанию для имеющихся строк. В SQL Server поведение при добавлении столбца несколько отличается от стандартного. Если выполнить запрос

  1. ALTER TABLE Product ADD available VARCHAR(20) DEFAULT 'Yes';
который добавляет в таблицу Product столбец available со значением по умолчанию ‘yes’, то, как это ни странно, столбец будет заполнен NULL-значениями. Чтобы «заставить» сервер заполнить столбец значениями ‘yes’, можно использовать один из двух способов:

a). Запретить NULL, т.е. написать такой запрос:

  1. ALTER TABLE Product ADD available VARCHAR(20) NOT NULL DEFAULT 'Yes';

Ясно, что этот способ не годится, если столбец допускает значения NULL.

b). Использовать специальное предложение WITH VALUES:

  1. ALTER TABLE Product ADD available VARCHAR(20) DEFAULT 'Yes' WITH VALUES;


Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
месяц назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.