2014-11-04 2 views
0

У меня есть задание SQL для класса в ближайшие несколько недель, и у меня есть эта небольшая ошибка, которую я не могу найти.Ошибка SQL Server Неправильный синтаксис ограничения 'TABLE'

USE master 

GO 

IF EXISTS (SELECT name 
    FROM sysdatabases 
    WHERE name = 'travel') 
    DROP DATABASE travel 
    GO 
    CREATE DATABASE travel 
GO 

USE travel 
GO 

CREATE TABLE customer 
(
    customerID INT, 
    lastname VARCHAR(70) NOT NULL, 
    firstname VARCHAR(70) NOT NULL, 
    phone VARCHAR(10) CONSTRAINT phoneCheck CHECK ((phone LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')), 
    category VARCHAR(7) NOT NULL CONSTRAINT categoryDefault DEFAULT 'A', 
    CONSTRAINT categoryCheck CHECK (category IN ('A', 'B', 'C')), 

    CONSTRAINT customerPK 
     PRIMARY KEY (customerID) 
) 

CREATE TABLE package /*Still need to do the Zero Padding*/ 
(
    packageCode VARCHAR(6), 
    destination VARCHAR(70), 
    CONSTRAINT packageCodeCheck CHECK (packageCode LIKE ('YFK%')), 
    price MONEY NOT NULL CONSTRAINT priceCheck CHECK ((price BETWEEN 1000 AND 10000)), 
    passportRequired VARCHAR(7) NOT NULL CONSTRAINT passportRequiredDefault DEFAULT 'Y', 
    CONSTRAINT passportCheck CHECK (passportRequired IN ('Y', 'N')), 

    CONSTRAINT packagePK 
     PRIMARY KEY (packageCode) 
) 

CREATE TABLE booking /*Still need to do the Customer and Package delete*/ 
(
    customerID VARCHAR(6), 
    bookingDate VARCHAR(70) NOT NULL DEFAULT GETDATE(), 
    amountPaid MONEY, 
    CONSTRAINT amountPaidDefault DEFAULT 0.00, 

    CONSTRAINT bookingPK 
     PRIMARY KEY (customerID) 
) 

INSERT INTO customer 
(customerID, lastname, firstname, phone, category) 
VALUES 
(1, 'Douglas', 'Bryan', 1478523690, 'B'), 
(2, 'Picard', 'Corey', 1234657890, 'B'), 
(3, 'Bond', 'Devon', 0987654321, 'B') 


INSERT INTO package 
(packageCode, destination, price, passportRequired) 
VALUES 
('YFK001', 'Orlando', 1000.47, 'Y'), 
('YFK002', 'Toronto', 1000.47, 'N') 

INSERT INTO booking 
(customerID, bookingDate, amountPaid) 
VALUES 
(2, '01-07-2014', 1000.51) 

Выполнение выполняется и возвращает следующую ошибку. Msg 142, Level 15, State 2, Line 0

Неправильный синтаксис для определения ограничений 'TABLE'.

Если кто-то может мне помочь, это было бы здорово.

Спасибо, Bryan

ответ

2

проблема с таблицей бронирования. Значение по умолчанию должно быть в этом синтаксисе. CONSTRAINT является необязательным ключевое слово, которое указывает на начало определения PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, or CHECK constraint (источник MSDN)

CREATE TABLE booking 
(
    customerID VARCHAR(6), 
    bookingDate VARCHAR(70) NOT NULL DEFAULT GETDATE(), 
    amountPaid MONEY CONSTRAINT amountPaidDefault DEFAULT 0.00, 
    CONSTRAINT bookingPK 
     PRIMARY KEY (customerID) 
) 
+0

Большое вам спасибо за помощь! –

1

У вас есть проблемы с таблицей бронирования. Проверьте исправленный сценарий ниже. Была запятая после заявления amountPaid MONEY, который не требуется. Поскольку мы не используем commma с ограничением столбцов.

Проверьте правильность сценария. Это успешно выполняется.

CREATE TABLE booking /*Still need to do the Customer and Package delete*/ 
(
    customerID VARCHAR(6), 
    bookingDate VARCHAR(70) NOT NULL DEFAULT GETDATE(), 
    amountPaid MONEY 
    CONSTRAINT amountPaidDefault DEFAULT 0.00, 

    CONSTRAINT bookingPK 
     PRIMARY KEY (customerID) 
) 
+0

Большое вам спасибо за помощь !!! –

Смежные вопросы