SQL creation script for using a scripts folder as a data source
Published 27 November 2013
To copy the SQL below, double-click on a line of code in the box, then press Ctrl+A followed by Ctrl+C.
SQLCompareExampleScripts2000.sql
CREATE DATABASE SprocketProduction
GO
USE SprocketProduction
GO
CREATE TABLE [dbo].[SprocketPrices] (
[RecordID] [int] IDENTITY (1, 1) NOT NULL ,
[SprocketID] [int] NULL ,
[Price] [money] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Sprockets] (
[RecordID] [int] IDENTITY (1, 1) NOT NULL ,
[Description] [varchar] (50) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[SprocketReferences] (
[SprocketID] [int] IDENTITY NOT NULL ,
[Reference] [varchar] (50) NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[SprocketReferences] WITH NOCHECK ADD
CONSTRAINT [PK_SprocketReferences] PRIMARY KEY NONCLUSTERED
(
[SprocketID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[SprocketPrices] WITH NOCHECK ADD
CONSTRAINT [PK_SprocketPrices] PRIMARY KEY NONCLUSTERED
(
[RecordID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Sprockets] WITH NOCHECK ADD
CONSTRAINT [PK_Sprockets] PRIMARY KEY NONCLUSTERED
(
[RecordID]
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON
GO
CREATE VIEW dbo.CurrentPrices
AS
SELECT SprocketID, Price, Description
FROM Sprockets INNER JOIN
SprocketPrices ON Sprockets.RecordID = SprocketPrices.SprocketID
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
CREATE DATABASE SprocketDevelopment
GO
USE SprocketDevelopment
GO
EXEC sp_addtype 'length', 'int', 'NULL'
EXEC sp_addtype 'width', 'int', 'NULL'
EXEC sp_addtype 'height', 'int', 'NULL'
GO
CREATE TABLE [dbo].[SprocketPrices] (
[RecordID] [int] IDENTITY (1, 1) NOT NULL ,
[SprocketID] [int] NULL ,
[Price] [money] NULL ,
[DateValidFrom] [datetime] NULL ,
[DateValidTo] [datetime] NULL ,
[Active] [char] (1) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Sprockets] (
[RecordID] [int] IDENTITY (1, 1) NOT NULL ,
[SprocketName] [varchar] (50) NULL ,
[SKU] [varchar] (20) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[SprocketReferences] (
[SprocketID] [int] NOT NULL ,
[Reference] [varchar] (50) NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[SprocketReferences] WITH NOCHECK ADD
CONSTRAINT [PK_SprocketReferences] PRIMARY KEY NONCLUSTERED
(
[SprocketID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[SprocketPrices] WITH NOCHECK ADD
CONSTRAINT [DF_SprocketPrices_DateValidFrom] DEFAULT (getdate()) FOR [DateValidFrom],
CONSTRAINT [DF_SprocketPrices_Active] DEFAULT ('N') FOR [Active],
CONSTRAINT [PK_SprocketPrices] PRIMARY KEY NONCLUSTERED
(
[RecordID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Sprockets] WITH NOCHECK ADD
CONSTRAINT [PK_Sprockets] PRIMARY KEY NONCLUSTERED
(
[RecordID]
) ON [PRIMARY]
GO
CREATE INDEX [IX_SprocketPrices] ON [dbo].[SprocketPrices]([SprocketID]) ON [PRIMARY]
GO
CREATE INDEX [IX_SprocketPrices_1] ON [dbo].[SprocketPrices]([DateValidFrom]) ON [PRIMARY]
GO
CREATE INDEX [IX_SprocketPrices_2] ON [dbo].[SprocketPrices]([DateValidTo]) ON [PRIMARY]
GO
GRANT SELECT ON [dbo].[SprocketPrices] TO [public]
GO
DENY REFERENCES , INSERT , DELETE , UPDATE ON [dbo].[SprocketPrices] TO [public] CASCADE
GO
GRANT SELECT ON [dbo].[Sprockets] TO [public]
GO
DENY REFERENCES , INSERT , DELETE , UPDATE ON [dbo].[Sprockets] TO [public] CASCADE
GO
ALTER TABLE [dbo].[SprocketPrices] ADD
CONSTRAINT [FK_SprocketPrices_Sprockets] FOREIGN KEY
(
[SprocketID]
) REFERENCES [dbo].[Sprockets] (
[RecordID]
)
GO
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON
GO
CREATE VIEW dbo.CurrentPrices
AS
SELECT SprocketPrices.SprocketID, SprocketPrices.Price,
Sprockets.SprocketName
FROM dbo.Sprockets INNER JOIN
dbo.SprocketPrices ON
dbo.Sprockets.RecordID = dbo.SprocketPrices.SprocketID
WHERE dbo.SprocketPrices.Active = 'Y'
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
GRANT SELECT ON [dbo].[CurrentPrices] TO [public]
GO
DENY INSERT , DELETE , UPDATE ON [dbo].[CurrentPrices] TO [public] CASCADE
GO
SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON
GO
CREATE PROCEDURE prcActivatePrices AS
UPDATE SprocketPrices SET Active='N' WHERE GetDate()<DateValidTo OR GetDate()>DateValidFrom
UPDATE SprocketPrices SET Active='Y' WHERE GetDate()>=DateValidFrom OR GetDate()<=DateValidFrom
GO
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON
GO
DENY EXECUTE ON [dbo].[prcActivatePrices] TO [public] CASCADE
GO
EXEC sp_addrole 'dispatch'
GO
CREATE TABLE [dispatch].[SprocketPackaging]
(
[RecordID] [int] NOT NULL IDENTITY(1, 1),
[SprocketID] [int] NOT NULL,
[PackagingLength] [length] NOT NULL,
[PackagingWidth] [width] NOT NULL,
[PackagingHeight] [height] NOT NULL,
[Packing Description] [varchar] (250) COLLATE Latin1_General_CS_AS_KS_WS NULL
)
GO
ALTER TABLE [dispatch].[SprocketPackaging] ADD CONSTRAINT [PK_SprocketPacking] PRIMARY KEY NONCLUSTERED ([RecordID])
GO
ALTER TABLE [dispatch].[SprocketPackaging] ADD CONSTRAINT [FK_Sprocket_SprocketPacking] FOREIGN KEY ([SprocketID]) REFERENCES [dbo].[Sprockets] ([RecordID])
GO
CREATE VIEW [dispatch].[SprocketPackagingDetails]
AS SELECT w.SprocketName AS 'Name',
wp.[Packing Description],
wp.[PackagingHeight]*wp.[PackagingWidth] AS 'Front Area',
wp.[PackagingWidth]*wp.[PackagingLength] AS 'Top Area',
wp.[PackagingHeight]*wp.[PackagingLength] AS 'Side Area',
wp.[PackagingHeight]*wp.[PackagingWidth]*wp.[PackagingLength] AS 'Volume'
FROM [dispatch].[SprocketPackaging] wp JOIN [dbo].Sprockets w ON w.RecordID = wp.SprocketID
GO