Portál AbcLinuxu, 12. května 2025 15:46

Dotaz: Jak zakázat delete na pohledu v mysql

29.11.2009 20:25 littlejohn
Jak zakázat delete na pohledu v mysql
Přečteno: 452×
Odpovědět | Admin
Mám 2 tabulky, respektive jeden pohled a jednu tabulku. Jedna z nich je pohled na tu druhou. Na tom pohledu mohu dělat insert,update(což mi vyhovuje), ale mohu tam i provést delete, což smaže celý záznam v ty opravdový tabulce. Jak mohu takové delete zakázat?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.11.2009 21:00 romank
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
dropnut, alebo premenovat view a vytvorit novy spravny.
29.11.2009 21:35 littlejohn
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Hezká rada. A jak mám ten správný vytvořit?
Bedňa avatar 30.11.2009 10:15 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pracovať cez užívateľa, ktorý ma delete zakázané.
KERNEL ULTRAS video channel >>>
30.11.2009 10:38 littlejohn
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Tak to zatím dělám, ale lepší by bylo kdyby bylo obecně zakázané nějak přímo při vytváření pohledu.
Bedňa avatar 30.11.2009 10:50 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Máš na to nejaký konkrétny dôvod?
KERNEL ULTRAS video channel >>>
30.11.2009 12:10 littlejohn
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Ani ne, snad jen bych ušetřil vytváření dalšího uživatele.
Bedňa avatar 30.11.2009 13:10 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Ja to vidím ako jediný korektný spôsob, od toho sú práve usery v MySQL.
KERNEL ULTRAS video channel >>>
30.11.2009 13:19 miso | skóre: 36 | blog: iSCSI_initiator_howto | Praha
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Asi hlupy dotaz, ale nemoze mat VIEW nastavene ine prava ako povodna TABLE?
Project Satan infects Calculon with Werecar virus
30.11.2009 17:14 littlejohn
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Tak to nechám na těch userech. Ještě jedna otázka: proč když updatuju přes view tak musím mít povolen update na všechy sloupce, na které view ukazuje(i když updatuju jen jeden)? Jinak to nefunguje?
30.11.2009 10:49 FooBar
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja to nechapu. Proc?
8.12.2009 20:04 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak zakázat delete na pohledu v mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Předem "neřeším proč", je přikládám řešení:
Pokud View splňuje podmínku pro INSERT i UPDATE, tak DELETE na úrovni VIEW může zakázat jen select z více tabulek.

Tedy, pokud si zrobím tabulku:

CREATE TABLE `tnodelete` (
  `id` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
);
a vložím do ní:
INSERT INTO `tnodelete` (`id`) VALUES (1);
To mi to jistě aplikaci nezatíží :) ... id může být i typu byte
A stvořím či upravím VIEW:
CREATE OR REPLACE VIEW myview AS SELECT tx.* FROM tx,tnodelete WHERE tnodelete.id = 1;
tak mám to samé co:
CREATE OR REPLACE VIEW myview AS SELECT * FROM tx;
jen s tím, že naprosto nepatrně zvednu režii dotazu, ale přes VIEW již nebude možné mazat (použít SQL dotaz DELETE FROM myview ...)

PS: Dost často se v datábázi vyskytuje nějaká pomocná tabulka jen s čísly 1-N pro různé SELECT-JOIN-y úplných datový řad z neúplných datových řad :), takže lze použít takovouto tabulku a netřeba vytvářet novou.

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.