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'です。
あなたは –
'tblInvoice'テーブルに' CustomerID'と 'SalesID'列を持っていますかいいえ、私は外部キー制約として、それらを追加すると、あなたのテーブルスキーマを投稿 –
しようとしたん:' SHOWはTABLE tblInvoice' – Alex