T-SQL中的CREATE TABLE语句问题

11 t-sql

我正在研究一个pomotion数据库,下面是我的CREATE TABLE步骤:

CREATE TABLE [dbo].[sponsors]
(
    [InstId] [bigint] NOT NULL,
    [EncryptedData] [varbinary](44) NOT NULL,
    [HashedData] [varbinary](22) NOT NULL,
    [JobId] [bigint] NOT NULL,
    CONSTRAINT [PK_sponsors] PRIMARY KEY CLUSTERED 
    (
        [InstId] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[sponsors]  WITH CHECK ADD  CONSTRAINT [FK_sponsors_jobs] FOREIGN KEY([JobId])
REFERENCES [dbo].[jobs] ([Id])
GO

ALTER TABLE [dbo].[sponsors] CHECK CONSTRAINT [FK_sponsors_jobs]
GO

ALTER TABLE [dbo].[sponsors]  WITH CHECK ADD  CONSTRAINT [FK_sponsors_titles] FOREIGN KEY([TId])
REFERENCES [dbo].[titles] ([TId])
GO

ALTER TABLE [dbo].[sponsors] CHECK CONSTRAINT [FK_sponsors_titles]
GO
Run Code Online (Sandbox Code Playgroud)

我想摆脱ALTER TABLE语句并使它们成为CREATE TABLE语句的一部分,我知道如何做最多但不确定如何在创建表中获取CHECK CONSTRAINT,有没有人有这方面的经验?或者知道如何?

Jos*_*lio 20

您只需在CREATE TABLE声明中添加每个外键约束:

CREATE TABLE [dbo].[sponsors]
(
    [InstId] [bigint] NOT NULL,
    [EncryptedData] [varbinary](44) NOT NULL,
    [HashedData] [varbinary](22) NOT NULL,
    [JobId] [bigint] NOT NULL,
    [TId] [int] NOT NULL,
    CONSTRAINT [PK_sponsors] PRIMARY KEY CLUSTERED 
    (
        [InstId] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, 
           IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, 
           ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],

    CONSTRAINT [FK_sponsors_jobs] FOREIGN KEY([JobId]) 
                                   REFERENCES [dbo].[jobs] ([Id]),

    CONSTRAINT [FK_sponsors_titles] FOREIGN KEY([TId]) 
                                  REFERENCES [dbo].[titles] ([TId])
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

  • 您可以根据Mitch Wheats的答案将约束直接添加到每个列声明中. (2认同)

Mit*_*eat 13

你似乎错过了一个专栏(TId)

CREATE TABLE [dbo].[sponsors] 
( 
    [InstId] [bigint] NOT NULL
        CONSTRAINT [PK_sponsors] PRIMARY KEY CLUSTERED, 
    [EncryptedData] varbinary NOT NULL, 
    [HashedData] varbinary NOT NULL, 
    [JobId] [bigint] NOT NULL
        CONSTRAINT [FK_sponsors_jobs] FOREIGN KEY REFERENCES [dbo].[jobs] ([Id]), 
    [TId] int NOT NULL
        CONSTRAINT [FK_sponsors_titles] FOREIGN KEY REFERENCES [dbo].[titles] ([TId])
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

  • +1用于声明与列定义内联的约束. (2认同)