>>> INSERT INTO ProductFileData >>> (ProductFileColumnId,ProductFileRowId,ProductFileId) >>> SELECT INSERTED.Id,NewID(),INSERTED.ProductFileId >>> FROM INSERTED INNER JOIN ProductFileData ON ProductFileData.ProductFileId = INSERTED.ProductFileId>>>
USE [LLNET4] GO /****** Object: User [LLNETUSER] Script Date: 07/08/2009 18:06:22 ******/ CREATE USER [LLNETUSER] FOR LOGIN [LLNETUSER] WITH DEFAULT_SCHEMA=[dbo] GO /****** Object: Table [dbo].[Owners] Script Date: 07/08/2009 18:06:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Owners]( [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_Owners_Id] DEFAULT (newid()), [Name] [nvarchar](50) NULL, [Password] [nvarchar](50) NULL, CONSTRAINT [PK_Owners] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[ProductFileData] Script Date: 07/08/2009 18:06:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[ProductFileData]( [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_ProductFileData_Id] DEFAULT (newid()), [ProductFileColumnId] [uniqueidentifier] NULL, [ProductFileRowId] [uniqueidentifier] NULL, [ProductFileId] [uniqueidentifier] NULL, [ObjectData] [varbinary](max) NULL, [TextData] [nvarchar](max) NULL, CONSTRAINT [PK_ProductFileData] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO /****** Object: Table [dbo].[VisualObjects] Script Date: 07/08/2009 18:06:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[VisualObjects]( [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_VisualObjects_Id] DEFAULT (newid()), [OwnerId] [uniqueidentifier] NULL, [ProductFileColumnId] [uniqueidentifier] NULL, [Name] [nvarchar](50) NULL, [Object] [varbinary](max) NULL, [ObjectType] [int] NULL, CONSTRAINT [PK_VisualObjects] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO /****** Object: Table [dbo].[ProductFiles] Script Date: 07/08/2009 18:06:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ProductFiles]( [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_ProductFiles_Id] DEFAULT (newid()), [OwnerId] [uniqueidentifier] NULL, [Name] [nvarchar](50) NULL, CONSTRAINT [PK_ProductFiles] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[ProductFileColumns] Script Date: 07/08/2009 18:06:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ProductFileColumns]( [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_ProductFileColumns_Id] DEFAULT (newid()), [ProductFileId] [uniqueidentifier] NULL, [Name] [nvarchar](50) NULL, CONSTRAINT [PK_ProductFileColumns] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Trigger [AddProductDataRows] Script Date: 07/08/2009 18:06:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Viv Phillips -- Create date: 08/07/2009 -- Description: Add data records for each existing row and the added column(s) -- ============================================= CREATE TRIGGER [dbo].[AddProductDataRows] ON [dbo].[ProductFileColumns] AFTER INSERT AS BEGIN INSERT INTO ProductFileData (ProductFileColumnId,ProductFileRowId,ProductFileId) SELECT DISTINCT INSERTED.Id,ProductFileData.ProductFileRowId,INSERTED.ProductFileId FROM INSERTED INNER JOIN ProductFileData ON ProductFileData.ProductFileId = INSERTED.ProductFileId END GO /****** Object: StoredProcedure [dbo].[AddRow] Script Date: 07/08/2009 18:06:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE [dbo].[AddRow] @ProductFileId uniqueidentifier AS BEGIN DECLARE @newid uniqueidentifier SET @newid = NEWID() INSERT INTO ProductFileData (ProductFileId,ProductFileColumnId,ProductFileRowId) SELECT @ProductFileId,ProductFileColumns.Id,@newid FROM ProductFileColumns WHERE ProductFileColumns.ProductFileId = @ProductFileId END GO /****** Object: ForeignKey [FK_ProductFileColumns_ProductFiles] Script Date: 07/08/2009 18:06:22 ******/ ALTER TABLE [dbo].[ProductFileColumns] WITH CHECK ADD CONSTRAINT [FK_ProductFileColumns_ProductFiles] FOREIGN KEY([ProductFileId]) REFERENCES [dbo].[ProductFiles] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[ProductFileColumns] CHECK CONSTRAINT [FK_ProductFileColumns_ProductFiles] GO /****** Object: ForeignKey [FK_ProductFileData_ProductFileColumns] Script Date: 07/08/2009 18:06:22 ******/ ALTER TABLE [dbo].[ProductFileData] WITH CHECK ADD CONSTRAINT [FK_ProductFileData_ProductFileColumns] FOREIGN KEY([ProductFileColumnId]) REFERENCES [dbo].[ProductFileColumns] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[ProductFileData] CHECK CONSTRAINT [FK_ProductFileData_ProductFileColumns] GO /****** Object: ForeignKey [FK_ProductFiles_Owners] Script Date: 07/08/2009 18:06:22 ******/ ALTER TABLE [dbo].[ProductFiles] WITH CHECK ADD CONSTRAINT [FK_ProductFiles_Owners] FOREIGN KEY([OwnerId]) REFERENCES [dbo].[Owners] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[ProductFiles] CHECK CONSTRAINT [FK_ProductFiles_Owners] GO /****** Object: ForeignKey [FK_VisualObjects_ProductFileColumns] Script Date: 07/08/2009 18:06:22 ******/ ALTER TABLE [dbo].[VisualObjects] WITH CHECK ADD CONSTRAINT [FK_VisualObjects_ProductFileColumns] FOREIGN KEY([ProductFileColumnId]) REFERENCES [dbo].[ProductFileColumns] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[VisualObjects] CHECK CONSTRAINT [FK_VisualObjects_ProductFileColumns] GOThe trigger here seems OK - but it still needs a ProductFileId field in ProductFileData which would not otherwise be neccessary....