簡體   English   中英

'TABLE'約束的SQL Server錯誤語法不正確

[英]SQL Server Error Incorrect Syntax of the 'TABLE' constraint

在接下來的幾周內,我將有一個針對課堂的SQL作業,我有一個我似乎找不到的小錯誤。

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)

執行運行並返回以下錯誤。 訊息142,第15級,州2,第0行

“ TABLE”約束的定義語法不正確。

如果有人可以幫助我,那就太好了。

謝謝,布萊恩

問題出在預訂表上。 默認必須使用此語法。 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)
)

您的預訂表有問題。 檢查以下更正的腳本。 對帳單金額為“已付款”后沒有逗號,這不是必需的。 由於我們不使用帶有列約束的逗號。

檢查正確的腳本。 成功完成了gettign。

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)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM