Portál AbcLinuxu, 7. května 2025 07:57
INSERT user (domain_id, username, password) SELECT 1, 'kdosi', 'bla bla' FROM user WHERE domain_id IN (1, 2) AND username = 'kdosi' HAVING COUNT(*) < 1;
SELECT user_id FROM user WHERE username = 'kdosi' AND domain_id = 1 AND password = 'bla bla';
Jenže username je možno editovat - existuje podobná finta i na update? Nějaké jiné řešení?
Děkuji za každou radu či odkaz.
SELECT FOR UPDATE
a jiná transakce při snaze změnit stejné řádky musí počkat
username
pro domény 1 a 2 a NULL
pro ostatní. Může to být funkční index, může to být index nad počítaným sloupcem - záleží, co umí vaše databáze.
Zatím mi připadá nejlogičtější zavést pojem jakési skupiny domén a místo domain_id zahrnout do klíče id té skupiny - řekl bych, že to nejlíp vystihuje podstatu řešeného problému.Dost možná to vystihuje i princip toho problému.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.