Странные ограничения в сгенерированном SQL

Примечание. Этот вопрос не относится к визуальной парадигме. Любой, кто знает SQL, может ответить на него.


Я использую Visual Paradigm для моделирования базы данных в нашем проекте (используя диаграммы ER). Когда Visual Paradigm генерирует эквивалент SQL для базы данных, и я импортирую его в MSSQL, это работает довольно красиво.

Я взглянул на сгенерированный код SQL, чтобы убедиться, что все правильно, и увидел что-то странное!:

За tblContracts Я определил ограничение с именем EndAfterStart чтобы убедиться, что значение endDate всегда больше чем startDate, Сгенерированный код SQL для этого ограничения находится здесь:

IF NOT EXISTS (SELECT * FROM sys.check_constraints WHERE object_id=OBJECT_ID(N'[dbo].[EndAfterStart]'))
ALTER TABLE [dbo].[tblContracts] WITH CHECK ADD CONSTRAINT [EndAfterStart] CHECK (([startDate]<=[endDate]))
GO
ALTER TABLE [dbo].[tblContracts] CHECK CONSTRAINT [EndAfterStart]
GO

И вопросы:

  1. Зачем tblContracts изменяется дважды, чтобы добавить это ограничение?!
  2. Разве первых двух строк недостаточно?
  3. Чем отличается вторая строка от четвертой?

2 ответа

Решение

Первая и вторая строки создают EndAfterStart ограничение, если оно не существует. Четвертая строка позволяет EndAfterStart ограничение.

Вторая строка добавляет ограничение к таблице; четвертая строка включает ограничение.

Другие вопросы по тегам