-- Kazanan kişinin e-mail'ini ve kazanan numara yazılıp ENTER'a basılacak. Bu kadar kolay :)
-- Sunucunun sayıları tek tek okuması ve 10 kez tekrar etmesi işimizi gayet kolaylaştıracak.
-- Gelin bunu PostgreSQL veritabanında provasını gerçekleştirelim.
-- Tablo tasarımı (Kabaca)
CREATE TABLE t_lottery_record(
record_id SERIAL NOT NULL PRIMARY KEY,
candidate_name TEXT NOT NULL,
candidate_last_name TEXT NOT NULL,
candidate_email TEXT NOT NULL,
candidate_phone TEXT NOT NULL,
stick_code TEXT UNIQUE NOT NULL,
registration_time TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW()
);
-- Sistemdeki 00000001 No'lu kaydın sisteme girilmesi
INSERT INTO t_lottery_record
(candidate_name, candidate_last_name, candidate_email, candidate_phone, stick_code)
-- Sistemdeki 00000002 No'lu kaydın sisteme girilmesi.
INSERT INTO t_lottery_record
(candidate_name, candidate_last_name, candidate_email, candidate_phone, stick_code)
-- Listenin orijinal hali şöyle
SELECT * FROM t_lottery_record ORDER BY record_id;
--1 Mehmet Kral Ekşici [email protected] +905331231212 C0B1A5F6 2022-10-12 15:30:19.812
--2 Barrack Feedanne [email protected] +905330000000 C5F7A5G5 2022-10-12 15:30:23.360
-- Hokus pokus'un döndürüleceği fonksiyonu yazıyoruz
CREATE OR REPLACE FUNCTION public.sp_change_winner(p_email TEXT, p_winner_record_id INT)
RETURNS BOOLEAN
LANGUAGE plpgsql
AS $function$
DECLARE
temporary_id INTEGER;
BEGIN
-- Barrack'ın id'sini geçici bir değişkene aldık
SELECT record_id INTO temporary_id FROM t_lottery_record WHERE candidate_email = p_email;
-- Mehmet Kral'ın id'sine -1 vererek boşa çıkardık.
UPDATE t_lottery_record SET record_id = -1 WHERE record_id = p_winner_record_id;
-- Barrack'ın id'sini kazanan id olarak değiştirdik.
UPDATE t_lottery_record SET record_id = p_winner_record_id WHERE record_id = temporary_id;
-- Evvelce -1 yaptığımız Mehmet Kral'ın id'sini Barrack'ın eski id'si olarak değiştirdik.
UPDATE t_lottery_record SET record_id = temporary_id WHERE record_id = -1;
RETURN TRUE;
EXCEPTION WHEN OTHERS THEN
raise notice '% %', SQLERRM, SQLSTATE;
-- Bir aksilik olursa bizi uyarsın
RETURN FALSE;
END;
$function$
;
-- Hokus pokus! Barrack kazanan numaraya sahip artık.
-- Bu da tablonun yeni hali
SELECT * FROM t_lottery_record ORDER BY record_id;
--1 Barrack Feedanne [email protected] +905330000000 C5F7A5G5 2022-10-12 15:30:23.360
--2 Mehmet Kral Ekşici [email protected] +905331231212 C0B1A5F6 2022-10-12 15:30:19.812
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}