Question: Please help! How do I fix my stored procedure to populate multiple tables using SQL Server? I keep getting these error. I'm struggling with taking
Please help! How do I fix my stored procedure to populate multiple tables using SQL Server? I keep getting these error. I'm struggling with taking the current value of the Sequences and inserting them into the Tournament table. Can someone go over my code?
Msg 547, Level 16, State 0, Procedure ListOfTournaments, Line 36 [Batch Start Line 485] The INSERT statement conflicted with the FOREIGN KEY constraint "FK_TournamentTypeID_GrandSlam". The conflict occurred in database "TermProjectTesting", table "dbo.TournamentType", column 'TournamentTypeID'. The statement has been terminated. Msg 547, Level 16, State 0, Procedure ListOfTournaments, Line 41 [Batch Start Line 485] The INSERT statement conflicted with the FOREIGN KEY constraint "FK_LocationID_Tournament". The conflict occurred in database "TermProjectTesting", table "dbo.Location", column 'LocationID'. The statement has been terminated.
****************************************************
CREATE TABLE ProfessionalAssociation ( LeagueId INT NOT NULL PRIMARY KEY, LeagueName VARCHAR(255) NOT NULL);
CREATE TABLE ATP ( LeagueID INT NOT NULL CONSTRAINT FK_ATP FOREIGN KEY (LeagueID) REFERENCES ProfessionalAssociation);
CREATE TABLE WTA ( LeagueID INT NOT NULL CONSTRAINT FK_WTA FOREIGN KEY (LeagueID) REFERENCES ProfessionalAssociation);
CREATE TABLE ITF ( LeagueID INT NOT NULL CONSTRAINT FK_ITF FOREIGN KEY (LeagueID) REFERENCES ProfessionalAssociation);
CREATE TABLE Location ( LocationID INT NOT NULL PRIMARY KEY, City VARCHAR(64) NOT NULL, State VARCHAR(64) NOT NULL, Country VARCHAR(3) NOT NULL); CREATE TABLE TournamentType ( TournamentTypeID INT NOT NULL PRIMARY KEY, TournamentType VARCHAR(64) NOT NULL);
CREATE TABLE GrandSlam ( TournamentTypeID INT NOT NULL PRIMARY KEY, TournamentPoints INT NOT NULL, CONSTRAINT FK_TournamentTypeID_GrandSlam FOREIGN KEY (TournamentTypeID) REFERENCES TournamentType);
CREATE TABLE Tournament ( TournamentID INT NOT NULL PRIMARY KEY, LocationID INT NOT NULL, TournamentTypeID INT NOT NULL, TournamentName VARCHAR(100), StartDate DATE NOT NULL, EndDate DATE NOT NULL, Surface VARCHAR(20) NOT NULL, NumberOfRounds INT NOT NULL, CONSTRAINT FK_LocationID_Tournament FOREIGN KEY(LocationID) REFERENCES Location, CONSTRAINT FK_TournamentTypeID FOREIGN KEY (TournamentTypeID) REFERENCES TournamentType);
CREATE SEQUENCE ProfessionalAssociation_seq START WITH 1; CREATE SEQUENCE Location_seq START WITH 1; CREATE SEQUENCE Tournament_seq START WITH 1; CREATE SEQUENCE TournamentType_seq START WITH 1;
--------------------------------------------------------------------------------------------
CREATE OR ALTER PROCEDURE ListOfTournaments (@LeagueId INT, @LeagueName VARCHAR(255), @City VARCHAR(64), @State VARCHAR(10), @Country VARCHAR(3), @TournamentPoints INT, @TournamentType VARCHAR(64), @TournamentName VARCHAR(255), @StartDate DATE, @EndDate DATE, @Surface VARCHAR(20), @NumberOfRounds INT) AS BEGIN DECLARE @current_Location_seq INT = NEXT VALUE for Location_seq; DECLARE @current_TournamentType_seq INT = NEXT VALUE FOR TournamentType_seq;
INSERT INTO ProfessionalAssociation (LeagueID, LeagueName) VALUES(@LeagueId, @LeagueName)
INSERT INTO Location (LocationID, City, State,Country) VALUES (NEXT VALUE FOR Location_seq, @City, @State, @Country) SELECT * FROM Location INSERT INTO TournamentType (TournamentTypeID,TournamentType) VALUES (NEXT VALUE FOR TournamentType_seq, @TournamentType) SET @current_Location_seq = NEXT VALUE for Location_seq; SET @current_TournamentType_seq = NEXT VALUE FOR TournamentType_seq; INSERT INTO GrandSlam (TournamentTypeID,TournamentPoints) VALUES (@current_TournamentType_seq,@TournamentPoints) INSERT INTO Tournament (TournamentID, LocationID, TournamentTypeID, TournamentName, StartDate, EndDate, Surface, NumberOfRounds) VALUES (NEXT VALUE FOR Tournament_seq, @current_Location_seq, @current_TournamentType_seq, @TournamentName, @StartDate, @EndDate, @Surface, @NumberOfRounds)
END; go BEGIN TRANSACTION ListOfTournaments; EXECUTE ListOfTournaments 3, 'ITF', 'London', 'London', 'GBR', 2000, 'Grand Slam', 'Wimbledon', '2021-06-28', '2021-07-12', 'Grass', 7
COMMIT TRANSACTION ListOfTournaments;
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
