在SQL中设置两个字段之间的约束

时间:2009-02-16 04:23:58

标签: sql

我有一个表,有两列,Enter_Time和Leave_Time,如何编写强制执行约束的CREATE TABLE脚本Leave_Time> Enter_Time?

编辑:使用Microsoft Access

3 个答案:

答案 0 :(得分:3)

使用PostgreSQL

CREATE TABLE foo (
  -- other columns...

  enter_time timestamptz NOT NULL,
  leave_time timestamptz NOT NULL,
  CONSTRAINT ck_interval CHECK (leave_time > enter_time)
);

答案 1 :(得分:2)

CREATE TABLE foo (
    Leave_Time DATETIME NOT NULL, 
    Enter_Time DATETIME NOT NULL, 
    CONSTRAINT CHK_TIMES CHECK (Leave_Time > Enter_Time));

答案 2 :(得分:1)

这取决于您的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(免费程序)并使用GUI创建表和约束。然后我问它的CREATE脚本。这样我就不必成为SQL向导来编写上面的代码了。