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'。
你有'CustomerID'和'tblInvoice'表 –
'SalesID'列沒有我試圖將其添加爲外鍵約束 –
發表您的表模式:'SHOW CREATE TABLE tblInvoice' – Alex