Установка ограничения между двумя полями в SQL - PullRequest
0 голосов
/ 16 февраля 2009

У меня есть таблица с двумя столбцами, Enter_Time и Leave_Time, как написать сценарий CREATE TABLE, который применяет ограничение Leave_Time> Enter_Time?

Редактировать: Microsoft Access используется

Ответы [ 3 ]

3 голосов
/ 16 февраля 2009

Использование PostgreSQL :

CREATE TABLE foo (
  -- other columns...

  enter_time timestamptz NOT NULL,
  leave_time timestamptz NOT NULL,
  CONSTRAINT ck_interval CHECK (leave_time > enter_time)
);
2 голосов
/ 16 февраля 2009
CREATE TABLE foo (
    Leave_Time DATETIME NOT NULL, 
    Enter_Time DATETIME NOT NULL, 
    CONSTRAINT CHK_TIMES CHECK (Leave_Time > Enter_Time));
1 голос
/ 16 февраля 2009

Это зависит от вашей базы данных SQL. Предполагается, что Microsoft SQL Server:

CREATE TABLE [dbo].[Timecard](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [EnterTime] [datetime] NULL,
    [LeaveTime] [datetime] NULL,
 CONSTRAINT [PK_Timecard] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[Timecard]  WITH CHECK ADD  CONSTRAINT [CK_Timecard] CHECK  (([EnterTime]<[LeaveTime]))
GO
ALTER TABLE [dbo].[Timecard] CHECK CONSTRAINT [CK_Timecard]

Но ваш вопрос был как написать это ... Я только что написал это для вас. Способ как , который я сделал, более полезен: я использовал Microsoft SQL Server Management Studio Express (бесплатная программа) и создал таблицу и ограничение с помощью графического интерфейса. Затем я спросил его для сценария CREATE. Таким образом, мне не нужно было быть мастером SQL, чтобы написать приведенный выше код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...