· 8 years ago · Apr 26, 2018, 02:28 PM
1DELIMITER //
2
3DROP PROCEDURE IF EXISTS SourceRPG.DropSchema
4//
5CREATE PROCEDURE SourceRPG.DropSchema()
6BEGIN
7 DROP TABLE IF EXISTS SourceRPG.Golds;
8 DROP TABLE IF EXISTS SourceRPG.Levels;
9END;
10//
11
12DROP PROCEDURE IF EXISTS SourceRPG.CreateSchema
13//
14CREATE PROCEDURE SourceRPG.CreateSchema()
15BEGIN
16 CREATE TABLE IF NOT EXISTS SourceRPG.Golds (
17 GoldID INT NOT NULL AUTO_INCREMENT,
18 SteamID VARCHAR(64) NOT NULL,
19 Class INT UNSIGNED NOT NULL,
20 Gold INT UNSIGNED NOT NULL,
21 PRIMARY KEY (LevelID)
22 );
23 CREATE TABLE IF NOT EXISTS SourceRPG.Levels (
24 LevelID INT NOT NULL AUTO_INCREMENT,
25 SteamID VARCHAR(64) NOT NULL,
26 Class INT UNSIGNED NOT NULL,
27 Level DECIMAL(8, 4) UNSIGNED NOT NULL,
28 PRIMARY KEY (LevelID)
29 );
30END;
31//
32
33DROP PROCEDURE IF EXISTS SourceRPG.UpsertGold
34//
35CREATE PROCEDURE SourceRPG.UpsertGold(SteamID VARCHAR(64), Class INT, Gold INT)
36BEGIN
37 IF (EXISTS(SELECT Gold FROM Golds WHERE SteamID = SteamID AND Class = Class)) THEN
38 UPDATE SourceRPG.Golds SET Gold = Gold WHERE SteamID = SteamID AND Class = Class;
39 ELSE
40 INSERT INTO SourceRPG.Golds (SteamID, Class, Gold) VALUES (SteamID, Class, Gold);
41 END IF;
42END;
43//
44
45DROP PROCEDURE IF EXISTS SourceRPG.UpsertLevel
46//
47CREATE PROCEDURE SourceRPG.UpsertLevel(SteamID VARCHAR(64), Class INT, Level DECIMAL(8, 4))
48BEGIN
49 IF (EXISTS(SELECT Level FROM Levels WHERE SteamID = SteamID AND Class = Class)) THEN
50 UPDATE SourceRPG.Levels SET Level = Level WHERE SteamID = SteamID AND Class = Class;
51 ELSE
52 INSERT INTO SourceRPG.Levels (SteamID, Class, Level) VALUES (SteamID, Class, Level);
53 END IF;
54END;
55//
56
57DELIMITER ;