Mysql lock

12 отговора 386 прегледа
#1

Mysql lock

как мога да lock-на само 1 запис в таблица( innodb) ?

много ще съм благодарен ако някой ми каже...

Отговор
в отговор на bili #2

Re: Mysql lock

доколкото знам, InnoDB lock-ва автоматично, в зависимост от заявката, транзакцията и isolation level-а

най-лесно е по оракълски, т.е.
select .... from .... for update (не забравяй commit-а после)

другите случаи си направих труда да ти ги изровя от документацията
[линк]

(т.е. бил си на един search разстояние от тях )

Отговор
в отговор на AcidMemory #3

Re: Mysql lock

мерси за отговора..:)
това съм го 4ел (не съм 4ак толко мързелив ;))))
целта ми е въпросния запис да е lock -нат непрекъснато когато даден user има конекция към сървъра... (

Отговор
в отговор на bili #4

Re: Mysql lock

"целта ми е въпросния запис да е lock -нат непрекъснато когато даден user има конекция към сървъра... ("

Това го няма никъде доколкото ми е известно. Нито в стандартите нито в която и да било реализация.

salle.online.bg/sig
Отговор
в отговор на salle #5

Re: Mysql lock

:) ми знам 4е го няма..userite в системета си ги записвам в таблица... абе..малко ми е сложно да ти го обесня....
..немало го в нито една реализация..браво..

Отговор
в отговор на salle #6

Re: Mysql lock

да не се обиждаш ..ама след като си нямаш представа за какво му е нещо на човек защо е необходимо пък да се правиш на толкоз умен
(видях linka ,все пак)..

Отговор
в отговор на bili #7

Re: не разбирам какво искаш да кажеш.

Имах предвид, че нито една реализация няма да ти позволи да държиш заключен определен ред през цялата сесия и в същото време да изпълняваш транзакции.

Още при първия COMMIT или ROLLBACK (явен или неявен) върпосния ред ще се отключи.

Ако греша поправи ме.

Наситина не знам какво правиш, но пък и ти не си обяснил.

Много е възможно GET_LOCK/RELEASE_LOCK да ти свърши работа.

[url=[линк]]salle.online.bg/sig[/url

Редактирано от salle на

Отговор
в отговор на salle #8

Re: не разбирам какво искаш да кажеш.

аз ве4е измислих как да го направя..( няма да заклювам този ред..)
не 4е нимам желание да ти обесния.. ама не ми се пише токлоз..:)
... ми представи се програма която следи склад,с4етоводство,документи,пари4ни потоци и т.н. 4е изп. MySQL сървър ..и.... предполагам 4е по-нататък ти е ясно

Отговор
в отговор на bili #9

Re: не разбирам какво искаш да кажеш.

Погледни все пак
GET_LOCK()
RELEASE_LOCK()

Ако си навътре в програмирането с thread-ове - това общо взето е нтерфейс към mutex

salle.online.bg/sig
Отговор
в отговор на bili #10

Re: не разбирам какво искаш да кажеш.

охооо, ако искаш да правиш security, това явно не е правилния път ...
ако ще да е на ниво база, мисли го по друг начин
ако ще да е на MySQL, мисли и по-внимателно (тъй като нямаш част от механизмите, които могат да се реализират със security чрез view-та или triggers)
но такова low-level security съм виждал само в оракъл и то в 9i нагоре, казва се Oracle Label Security и представлява етикет, който можеш да сложиш на всеки ред от таблица и да кажеш кой има право да го access-ва

предполагам изобщо няма да ти е трудно да си скалъпиш едно много добро secutiry ниво, което седи пред access-а към базата (става с 2-3 таблици групи и права за обекти и малко код, който ги ползва)

Отговор
в отговор на AcidMemory #11

Re: не разбирам какво искаш да кажеш.

Абсолютно правилно! С един малък слой може да се напарви много гавкъво и преносимо. Например може да се организират като "събития" всяко едно десйтвие в/у данните и от там както каза колегата :) с няколко таблици става и проверка преди "събитието" дали усер-а който го случва има права да го прави ако има, екшън, ако няма да :) пишеш във лог и изнасяш съобщение, да не прави магарии... предполагам, че тия неща гио знаеш, но аз просто споделям :) от опит.

успех

Отговор
в отговор на WAflata #12

Re: не разбирам какво искаш да кажеш.

мерси.. мисля не правя глупости

Отговор
в отговор на bili #13

Re: не разбирам какво искаш да кажеш.

Kum bili : Izvinqvaj no mislq che trqbwa osnovno da pregledash nachina si na postvane po forumite. Toku shto prochetoh celiq thread i ostanah s vpechatlenieto che dori ne si naqsno kakvo iskash - mojeshe pone da otgovorish na salle (koito ochevidno se opitva da ti pomogne) neshto smisleno wmesto da mu podhwurlqsh nedovurheni izrecheniq.

Отговор