-3
我只是想知道我是否正确使用CHECK
约束。我想确保winner
和loser
行彼此不同。有人可以检查我的sql是否有效[postgresql]
CREATE TABLE players (
id SERIAL PRIMARY KEY,
player_name VARCHAR
);
CREATE TABLE matches (
id SERIAL PRIMARY KEY,
winner INT REFERENCES players(id) ON DELETE CASCADE,
loser INT REFERENCES players(id) ON DELETE CASCADE,
CHECK (winner <> loser)
);
还有其他表(如VIEW
)使用它们。
CREATE VIEW view_wins AS
select players.id AS view_wins_id, count(matches.id) AS wins
FROM players LEFT OUTER JOIN matches
ON players.id = matches.winner
GROUP BY players.id;
CREATE VIEW view_played AS
SELECT players.id AS view_played_id, count(matches.id) AS played
FROM players LEFT OUTER JOIN matches
ON players.id = matches.winner OR players.id = matches.loser
GROUP BY players.id;
CREATE VIEW standings AS
SELECT players.id, players.player_name, view_wins.wins AS total_wins, view_played.played AS matches_played
FROM players, view_wins, view_played
WHERE players.id = view_wins_id AND players.id = view_played_id
ORDER BY total_wins DESC;
CREATE VIEW next_round AS
SELECT players.id AS player1_id, players.player_name AS player1_name,
players.id AS player2_id, players.player_name AS player2_name
FROM standings
WHERE player1_id.wins = player2_id.wins;
是的,'check'是罚款。注意:StackOverflow不是要求推荐的站点,工具,库等的地方。请参阅[我可以在这里询问什么主题?](http://stackoverflow.com/help/on-topic)中的第4点。 – trincot
@trincot哦对不起。你知道任何网站我可以得到我的代码检查?这对于像我这样的初学者会非常有帮助。 – MonocleBoo
要让人们查看您的(功能)代码,请参阅[代码评论](https://codereview.stackexchange.com/help/on-topic)。但请务必首先检查他们的帮助中心,这样您就一定会问题。 – trincot