Jump to content


DouglasDomi

Member Since 06/02/2011
Offline Last Active 11/07/2011, 16:31
-----

Topics I've Started

Problema Com Transactions

17/06/2011, 19:42

Boa Noite Pessoal,

Conseguem me ajudar no problema de conflito de transactions abaixo

Se duas transactions forem executadas ao mesmo tempo como mostra abaixo
levando em consideração que o valor de X no banco for 1 antes de executar a transaction;

Posted Image

as duas vão incrementar 1 transformando X em 2 e vão dar commit, estas informações são salvas na session entao
só depois aplicadas ao banco com o commit, como o banco de dados Mysql em InnoDB vai se comportar com esta situação?

Pelo que vejo parece que ao inves do resultado final ter que ficar 3, vai ser aplicado por 2 vezes o mesmo valor, neste
caso o valor 2 ficará como resultado final sendo aplicado pelos 2 usuários.

Obrigado desde já.

Duvida Sobre O Comando Update [Mysql]

29/03/2011, 09:33

Bom Dia,

Minha duvida é a seguinte...

tenho uma instrução MYSQL de UPDATE:

UPDATE tabela set valor = valor + 10 WHERE id = X

Digamos que ao mesmo tempo esta requisição vai chegar por 5 pessoas diferentes ao servidor...
como será tratado pelo MYSQL...sendo que utilizo estrutura de tabela InnoDB.

Pesquisei uma instrução que vazia assim...


SELECT x, valor FROM tabela WHERE id = X FOR UPDATE; 
UPDATE tabela set valor = valor + 10 WHERE id = X;

É necessario mesmo fazer o FOR UPDATE?

Como devo proceder?

Imagine o valor 10 que especifiquei acima um valor de varia de usuario para usuario, nao vai ser sempre 10...sera que pode ocorrer problema no incremento do valor caso as requisições de UPDATE cheguem exatamente ao mesmo tempo (quase impossivel) ? ...digo na hora de incrementar o valor ele for incrementar sobre um valor já desatualizado...

Obrigado desde já;

Delete Que Verifica Quantia De Registros Antes De Deletar

22/02/2011, 16:14

Boa Tarde pessoal.

Preciso montar uma query DELETE que verifique a quantia de registros filtrados e se ela for maior ou igual ao valor X entao realiza o delete.

Eu fiz a quey abaixo porem não esta funcionando.

DELETE
FROM inventario
WHERE item_id = 3 AND personagem_id = 5
AND 2 <= (SELECT COUNT(item_id))
LIMIT 2

Na query acima eu tento fazer o COUNT pegar o numero de registros capturados pela filtragem ja feita no item_id e personagem_id..oq está errado?

Abaixo os campos da tabela e um exemplo de informação na tabela

Campos -> id, item_id, personagem_id
Registro -> 1 , 3, 5
Registro-> 2, 3, 5
Registro-> 3, 2, 6
Registro-> 4, 3, 7
Registro-> 5, 3, 5

Valeu!

Query Para Consulta No Banco Mysql

19/02/2011, 23:09

Pessoal,

tenho a tabela:
inventario.id
inventario.cadastro_id
inventario.quantia < quantia do item que ele possui
inventario.item < ele obtem um valor X apontando para a tabela item.id

e a tabela:
cadastro.id
cadastro.nome
cadastro.slot_1 <- ele obtem um valor X apontando para a tabela inventario.id
cadastro.slot_2 <- ele obtem um valor X apontando para a tabela inventario.id
cadastro.slot_3 <- ele obtem um valor X apontando para a tabela inventario.id
cadastro.slot_4 <- ele obtem um valor X apontando para a tabela inventario.id
cadastro.slot_5 <- ele obtem um valor X apontando para a tabela inventario.id
cadastro.slot_6 <- ele obtem um valor X apontando para a tabela inventario.id
cadastro.slot_7 <- ele obtem um valor X apontando para a tabela inventario.id
cadastro.slot_8 <- ele obtem um valor X apontando para a tabela inventario.id


então eu tenho uma função que precisa equipar um item, porem para equipa-lo ele verifica a quantia que eu tenho deste item no inventario pois eu posso já ter equipado o mesmo item em algum outro slot...sendo que a quantia não diminui no inventario quando eu equipo um item apenas verifico se é possivel adicionar o mesmo item em outro slot mais para isso preciso escanear todos os campos acima de slots_1, 2, 3, 4[...] para ver se o item já foi equipado, então conforme o item for tambem encontrado nesses slots vai incrementado alguma variavel na consulta e no final verifica se o valor dessa variavel é maior do que a que tem no field quantia.

Entenderam? xD

Pode parecer complicado, se alguém não entendeu posta ai eu tento dar outra forma de explicar..vlw.

[Duvida]Trigger Não Funciona

06/02/2011, 10:32

Bom dia pessoal,

O trigger abaixo é importado sem problemas dentro do banco de dados...

Meu objetivo seria que depois que fosse feita a alteração do campo "quantia" e depois esse campo fosse = 0 então removia ele do banco...

To a atarde toda pra fazer isso funciona...

já tentei das duas formas abaixo:



DELIMITER |

CREATE TRIGGER checkinv AFTER UPDATE ON inventario
FOR EACH ROW
BEGIN
DELETE FROM inventario WHERE quantia < 1;
END;

|
DELIMITER ;



DELIMITER |

CREATE TRIGGER checkinv AFTER UPDATE ON inventario
FOR EACH ROW
BEGIN
IF NEW.quantia < 1 THEN
DELETE FROM inventario WHERE id = NEW.id;
END IF;
END;

|
DELIMITER ;

IPB Skin By Virteq