Skip to content

Instantly share code, notes, and snippets.

@Prophet731
Created June 27, 2015 16:17
Show Gist options
  • Save Prophet731/ff4b74006fa06c148c22 to your computer and use it in GitHub Desktop.
Save Prophet731/ff4b74006fa06c148c22 to your computer and use it in GitHub Desktop.
DELIMITER $$
DROP PROCEDURE IF EXISTS addLogPlayerID $$
CREATE PROCEDURE addLogPlayerID()
BEGIN
-- add logPlayerID column safely
IF NOT EXISTS( (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='logPlayerID' AND TABLE_NAME='tbl_chatlog') ) THEN
ALTER TABLE `tbl_chatlog` ADD COLUMN `logPlayerID` INT(10) UNSIGNED DEFAULT NULL;
ALTER TABLE `tbl_chatlog` ADD INDEX (`logPlayerID`);
ALTER TABLE `tbl_chatlog` ADD CONSTRAINT `tbl_chatlog_ibfk_player_id` FOREIGN KEY (`logPlayerID`) REFERENCES `tbl_playerdata` (`PlayerID`) ON DELETE CASCADE ON UPDATE CASCADE;
UPDATE
`tbl_chatlog`
INNER JOIN
`tbl_playerdata`
ON
`tbl_chatlog`.`logSoldierName` = `tbl_playerdata`.`SoldierName`
SET
`tbl_chatlog`.`logPlayerID` = `tbl_playerdata`.`PlayerID`
WHERE
`tbl_playerdata`.`SoldierName` <> 'AutoAdmin'
AND
`tbl_playerdata`.`SoldierName` <> 'AdKats'
AND
`tbl_playerdata`.`SoldierName` <> 'Server'
AND
`tbl_playerdata`.`SoldierName` <> 'BanEnforcer'
AND
`tbl_chatlog`.`logPlayerID` IS NULL;
END IF;
END $$
CALL addLogPlayerID() $$
DROP TRIGGER IF EXISTS `tbl_chatlog_player_id_insert`$$
CREATE TRIGGER `tbl_chatlog_player_id_insert` BEFORE INSERT ON `tbl_chatlog`
FOR EACH ROW BEGIN
SET NEW.logPlayerID = (SELECT `tbl_playerdata`.`PlayerID` FROM `tbl_server`
INNER JOIN `tbl_games` ON `tbl_server`.`GameID` = `tbl_games`.`GameID`
INNER JOIN `tbl_playerdata` ON `tbl_games`.`GameID` = `tbl_playerdata`.`GameID`
WHERE `tbl_playerdata`.`SoldierName` = NEW.logSoldierName AND `tbl_server`.`ServerID` = NEW.ServerID LIMIT 1);
END
$$
DROP TRIGGER IF EXISTS `Player_Update_BlankDataFix`$$
CREATE TRIGGER
Player_Update_BlankDataFix
BEFORE UPDATE ON
tbl_playerdata
FOR EACH ROW
BEGIN
IF (NEW.SoldierName IS NULL OR CHAR_LENGTH(NEW.SoldierName) = 0) AND OLD.SoldierName IS NOT NULL
THEN SET NEW.SoldierName = OLD.SoldierName;
END IF;
IF (NEW.EAGUID IS NULL OR CHAR_LENGTH(NEW.EAGUID) = 0) AND OLD.EAGUID IS NOT NULL
THEN SET NEW.EAGUID = OLD.EAGUID;
END IF;
IF (NEW.PBGUID IS NULL OR CHAR_LENGTH(NEW.PBGUID) = 0) AND OLD.PBGUID IS NOT NULL
THEN SET NEW.PBGUID = OLD.PBGUID;
END IF;
IF (NEW.IP_Address IS NULL OR CHAR_LENGTH(NEW.IP_Address) = 0) AND OLD.IP_Address IS NOT NULL
THEN SET NEW.IP_Address = OLD.IP_Address;
END IF;
END;
$$
DELIMITER ;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment