2013-12-03 2 views
2

У меня есть сценарий SQL для создания таблицы, я хотел бы по умолчанию всех, но несколько столбцов, чтобы быть «» другие требуют целочисленного значения по умолчанию 0изменяющего DEFAULT ограничение на колонку SQL

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

CREATE TABLE [dbo].[PMIPatients] 
(
[PID] [varchar](30) NOT NULL, 
[PatientFirstName] [varchar](30) NULL, 
[PatientLastName] [varchar](30) NULL, 
[PatientDOB] [varchar](30) NULL, 
[PatientDoctor] [varchar](30) NULL, 
[PatientDiet] [varchar](50) NULL, 
[PatientFallRiskLevel] [int] NULL, 
[BedId] [int] NULL, 
[BedDisplayInfo] TEXT NOT NULL DEFAULT '' 
CONSTRAINT [PK_HL7Patient] PRIMARY KEY CLUSTERED 
([PID] ASC) WITH (PAD_INDEX = OFF, 
    STATISTICS_NORECOMPUTE = OFF, 
    IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, 
    ALLOW_PAGE_LOCKS = ON) 
ON [PRIMARY] 
) 
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 

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

ALTER TABLE [dbo].[PMIPatients] ADD 
DEFAULT ((0)) 
FOR [PatientFallRiskLevel] 

http://www.w3schools.com/sql/sql_default.asp говорит код последующий должен быть в состоянии отказаться от DEFAULT как этот

ALTER TABLE Persons 
ALTER COLUMN City DROP DEFAULT 

, но я получаю ошибку синтаксиса на DEFAULT

Как я изменить/падение DEFAULT ограничение конкретные столбцы

+0

Какую базу данных вы используете? –

+0

@GOATCO MSSQL Express – Paperwaste

+2

Просто не используйте w3school, используйте MSDN вместо информации из первых рук. – Szymon

ответ

14

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

ALTER TABLE [dbo].[PMIPatients] ADD CONSTRAINT [PatientFallRiskLevel_Default] DEFAULT ((0)) FOR PatientFallRiskLevel 

Затем вы можете оставить его с помощью:

ALTER TABLE [dbo].[PMIPatients] DROP CONSTRAINT [PatientFallRiskLevel_Default] 
+0

Поэтому мне нужно изменить ограничения по умолчанию для каждого столбца в разные имена – Paperwaste

+1

Да, это так. Таким образом, вы можете позже ссылаться на эти ограничения по имени. Если вы не используете свое имя, сервер SLQ будет генерировать его для вас. – Szymon

+1

@ Шимон - спасибо. –

2

Синтаксис:

ALTER TABLE [dbo].[PMIPatients] ADD CONSTRAINT NameYourConstraint DEFAULT ((0)) FOR [PatientFallRiskLevel] 

ALTER TABLE [dbo].[PMIPatients] DROP CONSTRAINT NameYourConstraint 
Смежные вопросы