2016-12-04 30 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

好的,谢谢我会尝试 –

相关问题