2016-12-04 7 views
0
SET NOCOUNT ON 

Create Database FinalDatabase 
GO 

USE FinalDatabase 
GO 

/* 
Create tables 
*/ 

Create TABLE tblSalesPerson 
(
    SalesID INT IDENTITY(1,1)PRIMARY KEY, 
    FName VARCHAR(24) NOT NULL, 
    LName VARCHAR(24) NOT NULL, 
) 
GO 

Create TABLE tblCustomer 
(
    CustomerID INT IDENTITY(1,1) PRIMARY KEY, 
    Name VARCHAR(24)NOT NULL, 
    Address VARCHAR(48)NOT NULL, 
    City VARCHAR (48) NOT NULL, 
    State VARCHAR (2)NOT NULL, 
    ZIP VARCHAR (5)NOT NULL, 
    Phone VARCHAR (10)NOT NULL, 
) 
GO 

Create TABLE tblItem 
(
    ItemID INT IDENTITY (1,1)PRIMARY KEY, 
    Description VARCHAR(100), 
    UnitPrice MONEY 
) 
GO 

Create TABLE tblInvoice 
(
     InvoiceID INT IDENTITY(1,1) PRIMARY KEY, 
     Date DATE NOT NULL, 
     Subtotal MONEY , 
     SalesTax MONEY , 
     Total MONEY , 
     ShipDate DATE, 
     ShipHand MONEY NULL 
) 
GO 

Create TABLE tblLineItem 
(
     LineItemID INT IDENTITY(1,1) PRIMARY KEY, 
     Quantity INT NOT NULL, 
     Amount MONEY, 
     UnitPrice MONEY, 
) 
GO 

--Echo a print statement that confirms result. 
PRINT 'Tables successfully constructed...' 

SET NOCOUNT OFF 

ALTER TABLE tblInvoice 
ADD CONSTRAINT Customer_ID_FK 
    FOREIGN KEY (CustomerID) REFERENCES tblCustomer(CustomerID) 
GO 

PRINT 'Foreign Key Constraints successfully applied...' 

-- Alters tblInvoice to require CustomerID 
ALTER TABLE tblInvoice 
ALTER COLUMN CustomerID INT NOT NULL 
GO 

--Cannot give away orders....must have a total 
PRINT 'NOT NULL Constraints successfully applied...' 

ALTER TABLE tblInvoice 
ALTER COLUMN Total MONEY NOT NULL 
GO 

PRINT 'NOT NULL Constraints successfully applied...' 

--If you have any default constraints 
PRINT 'DEFAULT Constraints successfully applied...' 

ALTER TABLE tblCustomer 
ADD CONSTRAINT Name_Phone_Unique 
    UNIQUE(Name, Phone) -- makes this an alternate key 
GO 

PRINT 'UNQUE Constraints successfully applied...' 

--Check to make sure Ship Date is in the future 
ALTER TABLE tblInvoice 
ADD CONSTRAINT ShipDate_Future_Check 
    CHECK (ShipDate > Date) 
GO 

    PRINT 'CHECK Constraints successfully applied...' 


    SET NOCOUNT ON 

    GO 

    --Insert Customers 

    BEGIN TRY 
    BEGIN TRANSACTION 

    --INSERT INTO tblCustomer 

    INSERT INTO tblCustomer (Name,Address, City, State, ZIP, Phone) 
    VALUES ('Larry Bond', '1225 Meddle St', 'Williamsburg', 'MS', '39457', '2286562989') 

    COMMIT TRANSACTION 

    PRINT 'Customers successfully inserted...' 

END TRY 
BEGIN CATCH 
DECLARE @ErrorMessage VARCHAR(500) 
SET @ErrorMessage = ERROR_MESSAGE() + ' Rolledback transaction: Customer insertions.' 
ROLLBACK TRANSACTION 
RAISERROR (@ErrorMessage, 16,1) 
END CATCH 
GO 



    --SELECT * FROM tblCustomer 





    --Insert Invoice And SaleItem 

    BEGIN TRY 

    BEGIN TRANSACTION 

    DECLARE @CustomerID INT 
    SET @CustomerID = (SELECT CustomerID FROM tblCustomer WHERE Name = 'Jeffrey Donald' AND Phone = '2285882673') 

    DECLARE @SalesID INT 
    SET @SalesID = (SELECT SalesID FROM tblSalesPerson WHERE FName = 'Randy') 


    INSERT INTO tblInvoice (DATE, CustomerID, SalesID, Total, Salestax, ShipDate, ShipHand) 
    VALUES ('2010-8-5 8:30 am', @CustomerID, @SalesID, '174.44', '17.44', '2010-8-6 8:45 am', '10.99') 


    --Retrieve the newly created primary key to insert as a foreign key in tblLineItem 
    DECLARE @InvoiceID INT 
    DECLARE @ItemID INT 

    SET @InvoiceID = @@Identity 

    --Retrieve primary key of product for current listitem 
    --Insert new row in tblSaleItem 
    SET @ItemID = (SELECT ItemID FROM tblItem WHERE Description ='Red Jaguars Shirts XL') 

    INSERT INTO tblLineItem (Quantity, Amount, UnitPrice, InvoiceID, ItemID) 
    VALUES (2, 52.66, 105.20, @InvoiceID, @ItemID) 

    SET @ItemID = (SELECT ItemID FROM tblItem WHERE Description ='Red Jaguars Hoodies XL') 

    INSERT INTO tblItem (ItemID, Description, UnitPrice) 
    VALUES (@ItemID, 'White Jaguar Sweatpants', '124.56') 
    END TRY 

    BEGIN CATCH 
    DECLARE @ErrorMessage VARCHAR(500) 
    SET @ErrorMessage = ERROR_MESSAGE() + ' Rolledback transaction: insertions.' 
    ROLLBACK TRANSACTION 
    RAISERROR (@ErrorMessage, 16,1) 
    END CATCH 
    --New Invoice 






    SELECT * FROM tblCustomer 
    SELECT * FROM tblInvoice 
    SELECT * FROM tblItem 
    SELECT * FROM tblLineItem 
    SELECT * FROM tblSalesPerson 

    SET NOCOUNT OFF 

これは私が受け取ったエラーです。もっと見る必要がある場合は、もっとコードがあります。私は自分のコードを実行すると "無効な列名"を取得し続けますか?

メッセージ1769、レベル16、状態1、行88
外部キー 'Customer_ID_FK' 参照無効な列 '得意先' テーブル 'tblInvoice' を参照インチ

メッセージレベル1750、レベル16、状態0、行88
制約またはインデックスを作成できませんでした。以前のエラーを参照してください。

メッセージ4924、レベル16、状態1、行96
列 'CustomerID'がテーブル 'tblInvoice'に存在しないため、ALTER TABLE ALTER COLUMNが失敗しました。

メッセージレベル16、状態1、行187
無効な列名 '得意先コード'。

メッセージレベル16、状態1、行187
無効な列名 'SalesID'です。

メッセージレベル16、状態1、行201
無効な列名 'InvoiceID'。

メッセージレベル16、状態1、行201
無効な列名 'ItemID'です。

+0

あなたは –

+0

'tblInvoice'テーブルに' CustomerID'と 'SalesID'列を持っていますかいいえ、私は外部キー制約として、それらを追加すると、あなたのテーブルスキーマを投稿 –

+0

しようとしたん:' SHOWはTABLE tblInvoice' – Alex

答えて

1

最初のエラーが原因この

Create TABLE tblInvoice 
(
InvoiceID INT IDENTITY(1,1) PRIMARY KEY, 
Date DATE NOT NULL, 
Subtotal MONEY , 
SalesTax MONEY , 
Total MONEY , 
ShipDate DATE, 
ShipHand MONEY NULL 
) 
GO 

することであり、これは

ALTER TABLE tblInvoice 
ADD CONSTRAINT Customer_ID_FK FOREIGN KEY (CustomerID) 
REFERENCES tblCustomer(CustomerID) 
GO 

tblInvoiceには得意の列がありません。あなたが列を追加したい場合は が、これは前に外部キーを追加行います

ALTER TABLE tblInvoice 
ADD CustomerID INT NOT NULL 
GO 

同様に、あなたは請求書テーブルにSalesIDを持っていない、あなたがそれにデータを挿入しようとしています。

INSERT INTO tblInvoice (DATE, CustomerID, SalesID, Total, Salestax, ShipDate, ShipHand) 
VALUES ('2010-8-5 8:30 am', @CustomerID, @SalesID, '174.44', '17.44', '2010-8-6 8:45 am', '10.99') 
+0

だから私はそれを必要とする各テーブルにそれらを追加すると思いますか?私はそれを外部キーとして設定しますか? –

+0

はい。最初に表の列を持っている必要があります。その後、外部キーを作成します。 – DVT

+0

okありがとう私はそれを試みます –

関連する問題