2016-12-04 56 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' 引用無效列 '客戶ID'。

消息1750,級別16,狀態0,行88
無法創建約束或索引。查看以前的錯誤。

消息4924,級別16,狀態1,行96
ALTER TABLE ALTER COLUMN失敗,因爲列 '客戶ID' 不表 'tblInvoice' 存在。

消息207,級別16,狀態1,行187
無效的列名稱'CustomerID'。

消息207,級別16,狀態1,行187
無效的列名'SalesID'。

消息207,級別16,狀態1,行201
無效的列名稱'InvoiceID'。

消息207,級別16,狀態1,行201
無效的列名'ItemID'。

+0

你有'CustomerID'和'tblInvoice'表 –

+0

'SalesID'列沒有我試圖將其添加爲外鍵約束 –

+0

發表您的表模式:'SHOW CREATE 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沒有CustomerID列。 如果你想增加一列,這樣做,然後添加外鍵:

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

好的,謝謝我會嘗試 –

相關問題