2009-05-07 14 views
8

Pracuję na bazie pomotion i poniżej to, co mój CREATE TABLE steatment wygląda następująco:CREATE TABLE pytanie w T-SQL

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 

I chciałbym się pozbyć ALTER stole i uczynić to część instrukcji CREATE TABLE , wiem jak zrobić najwięcej, ale nie wiem jak uzyskać CHECK CONSTRAINT podczas tworzenia tabeli , czy ktoś ma z tym doświadczenie? lub wiesz jak?

+2

Jesteś zmieniając utworzoną tabelę, aby dodać ograniczeń. Dlaczego chcesz to zrobić w jakikolwiek inny sposób? –

+0

I sekundę sentyment Iana. Czy nie musisz utworzyć tabeli, zanim będziesz mógł sprawdzić ograniczenia? – Eric

Odpowiedz

17

Można tylko dodać każdy klucz obcy prawo w deklaracji Utwórz tabelę:

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] 
+2

Możesz dodać ograniczenie bezpośrednio do każdej deklaracji kolumny zgodnie z odpowiedzią Mitch Wheats. – cjk

+1

@ck - Działa w obie strony. Wspaniały! –

10

Wydaje się, że brakowało kolumnę (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] 
+2

+1 za zadeklarowanie wiązań w linii z definicjami kolumn. –

Powiązane problemy