Para criar uma procedure. Uma procedure é um grupo de comandos PL/SQL que realizam uma tarefa. OR REPLACE Recria a procedure se esta já existir.

Tamanho: px
Começar a partir da página:

Download "Para criar uma procedure. Uma procedure é um grupo de comandos PL/SQL que realizam uma tarefa. OR REPLACE Recria a procedure se esta já existir."

Transcrição

1 GERENCIANDO DADOS E CONCORRÊNCIA Pl/SQL PL/SQL significa "Procedural Language extensions to SQL". O PL/SQL pode ser usado em bancos de dados Oracle, no Oracle Server, em ferramentas clientes, isto é, Oracle Forms. O PL/SQL é muito similar à linguagem SQL mas acrescenta construções de programação similares a outras liguagens. Procedure Para criar uma procedure. Uma procedure é um grupo de comandos PL/SQL que realizam uma tarefa. Sintaxe CREATE [OR REPLACE] PROCEDURE [schema.]procedure [(argument[in I OUT I IN OUT] datatype [,argument [ IN I OUT I IN OUT] datatype]...)] {IS I AS} pl/sql_subprogram_body Parâmetros OR REPLACE Recria a procedure se esta já existir. schema procedure argument IN Dono da procedure. Nome da procedure. Parâmetro da procedure. Indica que você deve especificar o valor deste

2 OUT IN OUT parâmetro na chamada da procedure. Indica que a procedure ira retornar um valor por este parâmetro. Através deste parâmetro deve-se informar um valor para procedure e este voltara modificado. datatype Tipo de dado do parâmetro pl/sql_subprogram_body Codificação da procedure Exemplo que cria a procedure totaliza_nota: CREATE PROCEDURE totaliza_nota (p_cod_cliente IN number) AS BEGIN UPDATE nota_fiscal SET val_total = val_total + (SELECT sum(valor * qtd) FROM itens WHERE itens.nr_nota = nota_fiscal.nr_nota) END; dt_processamento = sysdate WHERE dt_processamento is NULL and cod_cliente = p_cod_cliente; COMMIT; Alter Procedure Para recompilar uma procedure. Sintaxe ALTER PROCEDURE [schema.]procedure COMPILE Drop Procedure Para remover uma procedure da base. Sintaxe DROP PROCEDURE [schema.]procedure

3 Executando Procedure Exemplo BEGIN END; NomeProc(Param); Ou EXEC NomeProc(Param); Dentro de um bloco: BEGIN NomeProc(Param); END; / FUNCTION

4 Create Function Cria uma função de usuário. Uma função é um conjunto de comandos PL/SQL normalmente utilizados para efetuar um cálculo ou manipular um valor. Podem ser utilizadas dentro de comandos SQL. Nas functions não é aconselhavel fazer alterações no status da base, por exemplo, incluir, alterar, deletar registros. Ao alterar o status do banco, esta função não poderá ser utilizada dentro de comandos SQL. Assim a utilidade da function é descaracterizada, assumindo a função da procedure que é própria para alterar dados. Sintaxe CREATE [OR REPLACE] FUNCTION [schema.]function [ (argument [IN] datatype [, argument [IN] datatype]...)] RETURN datatype {IS AS} pl/sql_subprogram_body Parâmetros OR REPLACE schema function argument IN datatype RETURN datatype pl/sql_subprogram_body Recria a função se esta já existir. Dono da função. Nome da função Nome de um parâmetro da função. Indica que você pode fornecer um valor no momento da chamada da função. É o tipo de dado do parâmetro Especifica o tipo de dado que a função deve retornar. É o código da função. Exemplo I Função que calcula a media dos salário de um determinado departamento: CREATE FUNCTION cal_media(p_deptno IN NUMBER) RETURN NUMBER IS v_media number; BEGIN SELECT avg(sal) INTO v_media FROM emp WHERE dept_no = p_deptno; RETURN(v_media); END;

5 A utilização da função criada acima em um comando SQL: SELECT cal_media(deptno) FROM dept; exemplo II CREATE OR REPLACE FUCTION media(p_dept number DEFAULT -1) RETURN NUMBER IS v_media number; BEGIN IF p_dept = -1 then SELECT avg(salario) INTO v_media FROM funcionario; ELSE SELECT avg(salario) INTO v_media FROM funcionario WHERE cod_dep = p_dept; END IF; RETURN (v_media); END; Drop Function Remove uma função da base. Exemplo DROP FUNCTION cal_media;

6 TRIGGERS Create Trigger Cria e habilita triggers. Trigger é um bloco de código PL/SQL associado a uma tabela. Se um comando SQL for executado sobre esta tabela as triggers são disparadas automaticamente pelo Oracle. Normalmente as regras de negócio são implementadas em triggers. Sintaxe CREATE [OR REPLACE] TRIGGER [schema.]trigger {BEFORE AFTER} {DELETE INSERT UPDATE [OF column [, column]...]} [OR {DELETE INSERT UPDATE [OF column [, column]...]}]... ON [schema.]table [ [REFERENCING { OLD [AS] old [NEW [AS] new] NEW [AS] new [OLD [AS] old] } ] FOR EACH ROW [WHEN (condition)] ] pl/sql_block Parâmetros OR REPLACE Recria a trigger se esta já existir. schema Nome do usuário dono da trigger

7 table trigger BEFORE AFTER DELETE INSERT UPDATE OF REFERENCIN G FOR ROW WHEN EACH pl/sql_block Nome da tabela à qual a trigger esta associada Nome da trigger que esta sendo criada. Indica ao ORACLE para disparar a trigger antes de executar o comando Indica ao ORACLE para disparar a trigger depois de executar o comando Indica que esta trigger deve ser disparada quando um comando DELETE apagar uma linha da tabela. Indica que esta trigger deve ser disparada quando um comando INSERT adicionar uma linha da tabela. Indica que esta trigger deve ser disparada quando um comando UPDATE alterar uma das colunas especificadas na clausula OF Usado para nomes correlacionados. Você pode usar correlação de nomes em blocos PL/SQL e em cláusulas WHEN de uma trigger para fazer referência de antigos e novos valores da linha corrente. Indica que a trigger deve ser disparada a cada linha afetada pelo comando Contém uma condição SQL que deve ser verdadeira para permitir o disparo da trigger. Bloco PL/SQL que indica a ação a ser executada pela TRIGGER Quando uma trigger é criada para mais que uma operação DML, pode-se utilizar constantes condicionais no corpo da trigger para executar determinado bloco de comandos, dependendo do comando que a disparou. As constantes condicionais são as seguintes: INSERTING TRUE se o comando que disparou a trigger foi um INSERT. DELETING UPDATING UPDATING (column_name) Obtendo o conteúdo dos campos em triggers: TRUE se o comando que disparou a trigger foi um DELETE. TRUE se o comando que disparou a trigger foi um UPDATE. TRUE se o comando que disparou a trigger foi um UPDATE e a coluna column_name foi alterada.

8 :NEW.Nome_do_C ampo Retorna o conteúdo novo do campo. No DELETE não é utilizado pois não há alteração de valores, consequentemente não há valor novo. :OLD.Nome_do_C ampo Retorna o conteúdo antigo do campo e nunca pode ser alterado. No INSERT não é utilizado pois não há valores antigos a inserção. BEFORE Se a trigger for disparada BEFORE os dados podem ser alterados. AFTER Se a trigger for disparada AFTER os dados não podem ser alterados. BEFORE AFTER Se a operação for INSERT retornará o valor que poderá ser inserido pelo comando SQL. No UPDATE o comportamento será o mesmo, pois retornará o valor do campo com as alterações que poderão ser feitas. Se a operação for INSERT retornará o valor que foi inserido pelo comando SQL. No UPDATE o comportamento será o mesmo, pois retornará o valor do campo com as alterações que foram feitas. Se a operação for UPDATE retornará o valor do campo antes da alteração. No DELETE retornará o conteúdo do campo atual. Se a operação for UPDATE retornará o valor do campo antes da alteração. No DELETE retornará o conteúdo do campo atual. Quando existem diversas triggers a serem executadas (before ou after), não se pode dizer qual será a ordem de execução dessas triggers. Triggers BEFORE Constrain ts Gravação Triggers AFTER Recomenda-se o uso das triggers before para correção dos dados gravados em :new, pois é esse o momento ideal para isso. Consistência de valores, checagem de dados após a gravação e operações similares deve-se usar triggers after.

9

10 Declarando variáveis dentro de uma trigger A variável V1 é do tipo numérica. A variável V2 é do tipo coluna de uma tabela, no exemplo, da tabela ITEM campo VAL_UNITARIO. A variável V3 é do tipo linha de uma tabela, no exemplo, da tabela ITEM. CREATE OR REPLACE trg_nome1 BEFORE INSERT OR DELETE OR UPDATE ON ITEM FOR EACH ROW DECLARE V1 NUMBER; V2 ITEM.VAL_UNITARIO%TYPE; V3 ITEM%ROWTYPE; BEGIN... END; Gerando uma mensagem de erro Usando trigger para restringir operações em uma tabela. No exemplo abaixo, irá exibir uma mensagem de erro quando a operação é diferente de uma inserção. CREATE OR REPLACE TRIGGER trg_nome2 BEGIN END; BEFORE INSERT OR DELETE OR UPDATE ON ITEM FOR EACH ROW IF NOT INSERTING THEN RAISE_APPLICATION_ERROR (-20000, 'Erro: não é permitida está operação!'); END IF;

11 Exemplo I O exemplo seguinte usa as constantes condicionais para determinar qual tipo de comando SQL foi feito na tabela classified_table: CREATE TRIGGER audit_trigger BEGIN BEFORE INSERT OR DELETE OR UPDATE ON classified_table FOR EACH ROW IF INSERTING THEN INSERT INTO audit_table VALUES (USER ' inseriu ' ' novo valor: ' :new.campo); ELSIF DELETING THEN INSERT INTO audit_table VALUES (USER ' apagou ' ' valor antigo: ' :old.campo); ELSIF UPDATING('FORMULA') THEN INSERT INTO audit_table VALUES (USER ' alterou ' ' formula antiga: ' :old.formula ' formula nova: ' :new.formula); ELSIF UPDATING THEN INSERT INTO audit_table VALUES (USER ' alterou ' ' valor antigo: ' :old.campo ' valor novo: ' :new.campo); END IF; END; Exemplo II Este exemplo cria uma trigger que só permite alterações na tabela EMP sejam feitas somente no horário comercial: CREATE TRIGGER scott.emp_permit_changes BEFORE DELETE OR INSERT OR UPDATE ON scott.emp DECLARE dummy INTEGER; BEGIN /* Se for Sábado ou Domingo retorna ERROR.*/ IF (TO_CHAR(SYSDATE, 'DY') = 'SAT' OR TO_CHAR(SYSDATE, 'DY') = 'SUN') THEN

12 raise_application_error( , 'Você não pode alterar funcionário no fim de semana'); END IF; /* Compara hoje com todos os feriados da empresa. Se é feriado hoje, então retorna ERRO.*/ SELECT COUNT(*) INTO dummy FROM company_holidays WHERE day = TRUNC(SYSDATE); IF dummy > 0 THEN raise_application_error( , 'Não é permitido alterar funcionário no feriado'); END IF; /*Se o horário atual for menor que 8:00AM ou maior 6:00PM, então retorna ERRO. */ IF (TO_CHAR(SYSDATE, 'HH24') < 8 OR TO_CHAR(SYSDATE, 'HH24') >= 18) THEN raise_application_error( , 'Só pode alterar funcionário no horário do expediente'); END IF; END; Exemplo III Este exemplo cria uma trigger que quando um novo funcionário é adicionado ou o salário de um já existente é alterado, garante que o valor do salário esteja na faixa da função do funcionário: CREATE TRIGGER scott.salary_check BEFORE INSERT OR UPDATE OF sal, job ON scott.emp FOR EACH ROW WHEN (new.job <> 'PRESIDENT') DECLARE minsal NUMBER; maxsal NUMBER; BEGIN /* Pega o menor e o maior salário da função. */ SELECT minsal, maxsal INTO minsal, maxsal FROM sal_guide WHERE job = :new.job; /* Se o salário é menor que o mínimo ou maior que o máximo gera um ERRO */ IF (:new.sal < minsal OR :new.sal > maxsal) THEN raise_application_error( , 'Salario ' :new.sal ' fora da faixa para '

13 END; :new.job ' do funcionario ' :new.ename ); END IF; PACKAGES O que é uma PACKAGE? Resposta, são áreas de armazenamentos de sub-programas, constantes, váriaveis e cursores em PL/SQL que dependendo do modo que você construir, você poderá compartilhar as informações desta PACKAGE com outros aplicativos. Uma PACKAGE é constituida de duas partes. A primeira é a PACKAGE SPECIFICATION e a seguda é a PACKAGE BODY, onde atráves delas podemos definir a função do nosso "pacote" dentro do banco de dados. A seguir irei comentar um pouco sobre cada parte. PACKAGE SPECIFICATION Tem como função de criar a interface de suas aplicações e definir os tipos de váriaveis, cursores, exceções, nomear rotinas, e funções, tudo que se define na parte de SPECIFICATION do seu PACKAGE poderá ser compartilhado com outros scripts ou programas em SQL e PL/SQL. PACKAGE BODY Está parte da sua PACKGE tem como função executar por completo todas as suas rotinas, cursores e etc, que você definiu na SPECIFICATION, deste modo, todas as funções executadas dentro do BODY não poderão ser compartihadas com outras

14 aplicações, além disso no BODY você poderá criar detalhes e declarações que ficarão invisíveis para outras aplicações. Abaixo está um exemplo em SQL de PACKAGE SPECIFICATION e BODY. Legenda dos códigos. PACKAGE SPECIFICATION PACKAGE BODY SQL CREATE OR REPLACE PACKAGE nome_package IS > 2 TYPE REGTESTE IS RECORD (NOME VARCHAR2(50), SEXO CHAR(1)); 3 CURSOR CTESTE (MATRICULA IN NUMBER) RETURN REGTESTE 4 FUNCTION EXCLUIR (MATRICULA IN NUMBER) RETURN BOOLEAN; 5 END nome_package; 6 / SQL CREATE OR REPLACE PACKAGE BODY nome_package IS > 2 CURSOR CTESTE (MATRICULA IN NUMBER) RETURN REGTESTE IN 3 SELECT NOME, SEXO FROM Tabela WHERE SEXO=M; 4 BEGIN 5 DELETE FROM Tabela WHERE SEXO=M; 6 END; 7 END nome_package; 8 / Como dito, percebemos que a PACKAGE SPECIFICATION foi compartilhada com a PACKAGE BODY e a própria BODY não poderá ser compartilhada com outras aplicação. Assim permitimos que alguma mudança na programação em SPEFIFICATION poderá afetar outras aplicações que estão utilizando o PACKAGE.

15 LOCK CONFLITO DE BLOQUEIO NO ORACLE O Oracle como outros bancos de dados, deve gerenciar múltiplos usuários acessando a mesma data simultaneamente, garantindo o controle de concorrência do banco de dados. Conflitos de bloqueios (lock conflicts) ocorrem quase que frequentemente durante as operações das transações, mais geralmente são quase todas resolvidos pelo próprio mecanismo de fila da Oracle. Para entender melhor o lock conflicts observe a tabela abaixo. TRANSAÇÃO 1 TEMPO TRANSAÇÃO 2 UPDATE PRODUTO SET valor = 30 WHERE id_produto = 1; 1 row updated. UPDATE produto SET valor = 52 WHERE id_produto = 2; Nenhuma linha atualizada no momento, pois a transação 1 entra em lock conflict com a transação 2. 08:00 UPDATE PRODUTO SET valor = 50 WHERE id_produto = 2; 1 row updated. 08:15 Transação continua normal, utilizando selects, inserts, updates e até mesmo deletes na mesma ou em outras tabelas. Sessão ainda aguardando 08:20 Transação continua normal, utilizando selects, inserts, updates e até mesmo deletes na mesma ou em outras tabelas. 1 row updated. 08:25 commit;

16 Liberado o lock, a sessão continua normalmente. A tabela mostra a atividade, de duas transações. Observe no horário das 08:15 que a transação 1 não conseguiu fazer o update, pois a transação 2 estava como lock na linha. Somente as 08:25, quando o commit da transação 2 é feito, o lock é liberado que a transação 1 consegui realizar a operação. Como em nenhum ambiente o cenário é perfeito (como o do meu quadro apresentado), o usuário não vai ficar esperando cinco minutos um simples update de outra transação ser liberado para ele trabalhar, ele vai imediatamente contatar você que o banco está lendo, não esta funcionando, e por ai vai Evitando os lock conflicts. Obviamente para se ter um pouco de prevenção dos conflitos, é necessário assegurar que nenhuma transação execute por longos períodos de tempo sem um commit (DDL, DCL). A cada mudança, assim que necessário, pedir para o LGWR trabalhar (processo de commit), fazendo a gravação dos dados persistente nos arquivos de Redo e consequentemente nos Datafiles Detectando os lock conflicts. É realmente fácil detectar usuário que sofrem bloqueios e os que fazem o bloqueio. Para isso criaremos um ambiente para o melhor entendimento do conceito. O script abaixo cria o usuário usr1 e o usuário usr2. SQL> create user usr1 2 profile default 3 identified by oracle 4 quota unlimited on users 5 account unlock; Usuário criado. SQL> create user usr2 2 profile default 3 identified by oracle 4 quota unlimited on users 5 account unlock; Usuário criado. SQL> grant create table, connect to usr1, usr2; Concessão bem-sucedida. Agora com o usuário usr1 criamos a tabela de produto e disparamos dois insert.

17 SQL> create table produto 2 ( 3 id_produto number primary key, 4 valor number(10,2) 5 ) 6 / Tabela criada. SQL> insert into produto values (&id, &valor); Informe o valor para id: 1 Informe o valor para valor: 50 1 linha criada. SQL> / Informe o valor para id: 2 Informe o valor para valor: 5 1 linha criada. SQL> commit; Commit concluído. Ainda como o usuário usr1, vamos dar a permissão de update para o usuário usr2, assim garantimos que o usr2 poderá acessar a tabela de usr1. SQL> grant update on produto to usr2; Concessão bem-sucedida. Agora sim, nosso ambiente está pronto para detectar os locks. Com o usuário usr1 faça um update atualizando a coluna valor para 35 onde o id_produto é igual a 1. SQL> update produto set valor = 35 2 where id_produto = 1; 1 linha atualizada. Em outro terminal, com o usuário usr2 também atualizamos a coluna valor onde o id_produto é igual a 1, observe o lock entrando em ação. SQL> update usr1.produto set valor = 36 2 where id_produto = 1; _ A sessão do usr2 fica aguardando algum commit da transação do usr1. Para conseguir detectar sessões que estão bloqueando outras sessões, basta executar o select baixo. SQL> select username from v$session

18 2 where sid in ( 3 select blocking_session from v$session 4 ) 5 / USERNAME USR1 Verificando usuários que estão aguardando commit de outra sessão. SQL> select sid, username, blocking_session 2 from v$session 3 where blocking_session is not null; SID USERNAME BLOCKING_SESSION USR2 141 Usuários que estão com o lock, e usuário que estão aguardando a outra transação. SQL> select sid, username, blocking_session 2 from v$session where blocking_session is not null 3 UNION ALL 4 select A.sid, A.username, A.blocking_session 5 from v$session A, v$session B 6 where A.sid = B.blocking_session; SID USERNAME BLOCKING_SESSION USR USR1 Resolvendo lock conflicts. Somente é possível resolver conflitos de bloqueios através de duas maneiras: 1) Emitir um commit na sessão que está bloqueando 2) Terminar a sessão que está bloqueando. A melhor maneira de resolver é contatar o usuário que está segurando o lock e pedir para liberar, afim de poder completar a transação. Como nem sempre está opção é possível, existe uma maneira mais rápida radical, que seria finalizar a sessão pelo modo kill do Oracle. ALTER SYSTEM KILL SESSION SID, SERIAL# IMMEDIATE; SQL> select sid, serial# 2 from v$session where username = 'USR1';

19 SID SERIAL# SQL> alter system kill session '141, 46' immediate; Sistema alterado. Depois de alguns segundos, se voltarmos para o terminal do usuário usr2, pode observar que o update antes que estava aguardando terminar o lock do usuário usr1, é atualizada. 1 linha atualizada. SQL> Por fim, aqui está outras views com informações de lock disponível no Oracle: V$ENQUEUE_LOCK V$EVENT_NAME V$LOCK V$_LOCKV $LOCKED_OBJECT V$LOCKS_WITH_COLLISIONS V$LOCK_ACTIVITY V$LOCK_ELEMENT MAIS VIEWS GV$ENQUEUE_LOCK GV$LOCK_ELEMENT GV$LOCKS_WITH_COLLISIONS GV$LOCKED_OBJECT GV$LOCK GV$EVENT_NAME GV$LOCK_ACTIVITY Lock de linha Um lock do tipo linha é aplicado individualmente às linhas de uma tabela. Quando uma linha está locada, nenhuma outra sessão conseguirá alterá-la até que a transação que detém o lock chegue ao fim. Claro que se uma determinada linha de uma tabela estiver locada por uma determinada transação, outros processos poderão sem problema algum alterar as outras linhas dessa tabela que ainda não estejam locada s.

20 Lock de tabela Esse tipo de lock é aplicado no nivel tabela e pode ser utilizado para obter uma imagem consistente da tabela e para assegurar que sua definição não mude enquanto transações ativas ainda existirem nela. Tipos de Locks No Oracle, os seguintes tipos de locks são possíveis. Tipo Row Share (RS) Row Excluive (RX) Share (S) Share Row Exclusive (SSX) Share Row Exclusive (SRX) Exclusive (X) Level Tabela Tabela Tabela Tabela Tabela Tabela/Linha Para entender de forma integral e para usufruir e resolver problemas utilizando a view V$LOCK é importante entender cada um desses tipos de locks. Vejamos a seguir uma explicação de cada um deles. Row Share (RS) Também é conhecido com subshare lock (SS), esse lock indica que a transação possui linhas locada s exclusivamente, mas ainda não as alterou. É obtido através da instrução da Listagem 1. SELECT...FROM table...for UPDATE... LOCK TABLE table IN ROW SHARE MODE; Listagem 1. Lock do tipo Row Share. Um lock RS pode ser utilizado para garantir que a tabela não será locada exclusivamente antes de sua transação alterá-la. Row Exclusive (RX) Também conhecido como subexclusive lock (SX), esse lock indica que a transação possui linhas locadas exclusivamente e já as alterou. É obtido através das instruções da Listagem 2.

21 INSERT INTO tabela...; UPDATE tabela...; DELETE FROM tabela...; LOCK TABLE table IN ROW EXCLUSIVE MODE; Listagem 2. Lock do tipo Row Exclusive. Share (S) Esse tipo de lock é obtido através da instrução da Listagem 3. LOCK TABLE table IN SHARE MODE; Listagem 3. Lock do tipo Share. Geralmente o lock S é utilizado para garantir uma imagem consistente da tabela ao longo da transação, isto é, ele garante que nenhum comando DML será permitido. É necessário utilizar essa abordagem, pois o isolation Level default do Oracle é Read Commit, isto é, as alterações efetuadas por outras transações são imediatamente visíveis para todos os usuários logo após serem comitadas. Sendo assim, sua transação pode ter várias versões da mesma tabela durante sua duração, o que às vezes não é interessante. Para evitar esse tipo de problema, use um lock S ou inicie a transação com o isolation level definido para Serializable, ou seja, a transação verá somente dados commitados até o seu inicio. Atenção: Quando a tabela está locada no modo S, somente a transação que possui o lock pode executar DMLs. Por se tratar de um lock do tipo share, várias transações podem obtêlo concorrentemente. Caso isso aconteça, nenhuma delas conseguirá efetuar alterações, pois uma estará bloqueando a outra. Share Row Exclusive (SSX) Esse tipo de lock é um pouco mais exclusivo que o S, pois somente uma transação pode obtê-lo por vez. Ele permite a outras transações obterem locks em linhas especificas, mas não permite a alteração delas. Esse tipo de lock é obtido através da instrução da Listagem 4. LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;

22 Listagem 4. Lock do tipo Share Row Exclusive. Exclusive (X) Esse é o mais restritivo lock existente, ele permite apenas que as outras sessões acessem a tabela através de instruções SELECTs, ou seja, nenhum tipo de lock é permitido. Esse lock também é o único lock que pode ser aplicado a linhas. Quando uma linha está locada, ela está locada exclusivamente e nenhuma transação conseguirá alterá-la até que a transação que mantém o lock chegue ao fim através de um rollback ou commit. Um deadlock é uma situação que ocorre quando dois processos aguardam para utilizar um recurso que está sendo utilizado pelo outro processo, ou quando mais de dois processos estão aguardando por recursos de forma circular. Esta situação pode ocorrer com qualquer tipo de processos que compartilhem recursos mutuamente exclusivos, mas é relativamente comum em bancos de dados. O objetivo deste post é clarificar esta situação e apresentar alguns exemplos. Durante as modificações de dados, os bancos de dados utilizam bloqueios (locks) para garantir que outros processos não modifiquem/consultem os mesmos dados simultaneamente. Quando um processo precisa acessar algum dado que está bloqueado por outro processo, o primeiro deve aguardar até que o segundo conclua suas operações. Este bloqueio é normal e necessário, e não caracteriza um deadlock. Quando o segundo processo concluir suas operações os bloqueios serão liberados e o primeiro processo continuará executando normalmente. Um deadlock ocorre somente quando nenhum dos dois (ou mais) processos envolvidos pode continuar sua execução sem intervenção externa. Deadlocks também podem ocorrer nos bancos de dados com recursos como memória e threads, mas o mais comum é envolvendo locks. Normalmente os sistemas gerenciadores de bancos de dados possuem mecanismos para detectar e resolver deadlocks. Abaixo um exemplo simples utilizando o SQL Server. O primeiro processo (tela com fundo preto) realiza uma alteração no nome do cliente 1, que ocorre normalmente: Um outro processo (tela com fundo azul) realiza uma alteração no nome do cliente 2, com sucesso. Em seguida tenta alterar o nome do cliente 1:

23 Neste momento o segundo processo fica bloqueado, pois o cliente 1 está sendo alterado pelo primeiro processo. Aqui não há deadlock, pois o processo 1 pode concluir suas alterações (COMMIT/ROLLBACK), liberando assim o processo 2. No entanto, se neste momento o processo 1 tentar alterar o cliente 2, haverá um deadlock: O processo 1 estava bloqueando o cliente 1 e esperando para alterar o cliente 2. O processo 2 estava bloqueando o cliente 2 e esperando para alterar o cliente 1. Ambos os processos estavam aguardando por um recurso que estava bloqueado pelo outro, e nenhum dos dois poderia continuar. O software gerenciador de banco de dados detectou o deadlock e abortou (ROLLBACK) uma das transações (erro 1205 na tela acima), fazendo com que a outra transação pudesse continuar. O mecanismo de detecção de deadlocks e as mensagens de erro variam de acordo com o banco de dados. No Oracle, o seguinte erro é gerado quando um deadlock é detectado: ORA-00060: deadlock detected while waiting for resource Nem todos os gerenciadores de bancos de dados implementam um mecanismo de detecção de deadlocks. O Progress OpenEdge, por exemplo, não implementa. Em um banco de dados OpenEdge, quando um usuário fica bloqueado ele recebe uma indicação visual, informando que o registro está bloqueado por outro usuário:

24 Como não há controle de deadlock, é possível que dois ou mais usuários recebam esta mesma mensagem, e fiquem um esperando pelo outro. Existem técnicas para minimizar a ocorrência de deadlocks em bancos de dados. Normalmente a própria documentação dos bancos de dados contém informações mais detalhadas sobre o assunto. Consulte sua documentação para mais detalhes

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição.

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição. Conceitos PL/Sql Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição. Sintaxe CREATE SEQUENCE [schema.]sequence [INCREMENT BY

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 11-1. INTRODUÇÃO TRIGGERS (GATILHOS OU AUTOMATISMOS) Desenvolver uma aplicação para gerenciar os dados significa criar uma aplicação que faça o controle sobre todo ambiente desde a interface, passando

Leia mais

FAPLAN - Faculdade Anhanguera Passo Fundo Gestão da Tecnologia da Informação Banco de Dados II Prof. Eder Pazinatto Stored Procedures Procedimento armazenados dentro do banco de dados Um Stored Procedure

Leia mais

SQL Gatilhos (Triggers)

SQL Gatilhos (Triggers) SQL Gatilhos (Triggers) Laboratório de Bases de Dados Gatilho (trigger) Bloco PL/SQL que é disparado de forma automática e implícita sempre que ocorrer um evento associado a uma tabela INSERT UPDATE DELETE

Leia mais

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

Oracle 10g: SQL e PL/SQL

Oracle 10g: SQL e PL/SQL Oracle 10g: SQL e PL/SQL PL/SQL: Visão Geral Enzo Seraphim Visão Geral Vantagens de PL/SQL Suporte total à linguagem SQL Total integração com o Oracle Performance Redução da comunicação entre a aplicação

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

Leia mais

PL/pgSQL por Diversão e Lucro

PL/pgSQL por Diversão e Lucro PL/pgSQL por Diversão e Lucro Roberto Mello 3a. Conferência Brasileira de PostgreSQL - PGCon-BR Campinas - 2009 1 Objetivos Apresentar as partes principais do PL/pgSQL Apresentar casos de uso comum do

Leia mais

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco

Leia mais

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger a tecnologia de banco de dados permite persistir dados de forma a compartilha-los com varias aplicações. Aplicação 1 aplicação 2 aplicação 3 SGDB Banco

Leia mais

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger A tecnologia de banco de dados permite persistir dados de forma a compartilha-los com varias aplicações. Aplicação 1 aplicação 2 aplicação 3 SGDB Banco

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 1

PHP INTEGRAÇÃO COM MYSQL PARTE 1 INTRODUÇÃO PHP INTEGRAÇÃO COM MYSQL PARTE 1 Leonardo Pereira leonardo@estudandoti.com.br Facebook: leongamerti http://www.estudandoti.com.br Informações que precisam ser manipuladas com mais segurança

Leia mais

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com SQL Procedural Josino Rodrigues Neto josinon@gmail.com SQL Procedural Agregada em SQL-92 As ferramentas têm nomes para suas linguagens SQL procedurais/embutidas Oracle : PL/SQL Postgres PL/Pgsql SQL Server

Leia mais

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. Triggers um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. o evento pode ser INSERT, UPDATE, ou DELETE. o trigger pode ser accionado imediatamente

Leia mais

Linguagem PL/SQL e Triggers

Linguagem PL/SQL e Triggers TECNOLOGIA DE BASES DE DADOS Linguagem PL/SQL e Triggers António Manuel Silva Ferreira UNIVERSIDADE DE LISBOA FACULDADE DE CIÊNCIAS DEPARTAMENTO DE INFORMÁTICA asfe@di.fc.ul.pt Sumário Linguagem PL/SQL

Leia mais

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve Triggers e Regras Fernando Lobo Base de Dados, Universidade do Algarve 1 / 14 Triggers Um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 10 - PROCEDIMENTOS ARMAZENADOS - STORED PROCEDURES 1. INTRODUÇÃO Em muitas situações será necessário armazenar procedimentos escritos com a finalidade de se utilizar recursos como loop, estruturas

Leia mais

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br BANCO DE DADOS info 3º ano Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br Na última aula estudamos Unidade 4 - Projeto Lógico Normalização; Dicionário de Dados. Arquitetura

Leia mais

PL/pgSQL. Introdução. Introdução. Introdução

PL/pgSQL. Introdução. Introdução. Introdução Introdução PL/pgSQL Banco de Dados II Prof. Guilherme Tavares de Assis PL/pgSQL (Procedural Language for the PostgreSQL) é uma linguagem procedural carregável desenvolvida para o SGBD PostgreSQL, que possui

Leia mais

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Linguagem de Programação de Banco de Dados Triggers em PostgreSQL Todos os bancos de dados comerciais possuem uma linguagem procedural auxiliar para a

Leia mais

Sistemas de Informação

Sistemas de Informação Sistemas de Informação Rules and Triggers André Restivo Sistemas de Informação 2006/07 Rules e Triggers Nem todas as restrições podem ser definidas usando os mecanismos que estudamos anteriormente: - CHECK

Leia mais

António Rocha Nuno Melo e Castro

António Rocha Nuno Melo e Castro António Rocha Nuno Melo e Castro !"#$ Excepção: condição de erro; quando ocorre o erro é levantada uma excepção que interrompe o fluxo normal de execução do programa e o direcciona para uma rotina de tratamento

Leia mais

Logado no OracleXE vamos acessar a opção:

Logado no OracleXE vamos acessar a opção: Tutorial PL/SQL O PL/SQL é uma linguagem procedural que roda diretamente no núcleo do SGBD Oracle. O objetivo deste tutorial é mostrar a criação de funções e procedimentos em PL/SQL, interagindo com comandos

Leia mais

Triggers e mais... Instituto Militar de Engenharia IME 1o. Semestre/2005 Triggers Propósito mais amplo que restrições Restrições onde se explicita o evento Regras event-condition-action (ECA) Eventos:

Leia mais

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas Banco de Dados II Triggers e Functions Prof. Moser Fagundes Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas Sumário da aula Functions (funções) Triggers (gatilhos) Atividades Functions

Leia mais

A compreensão do mecanismo de transações é essencial, sempre que a

A compreensão do mecanismo de transações é essencial, sempre que a Transações A compreensão do mecanismo de transações é essencial, sempre que a base de dados d servir várias clientes simultaneamente. Em SQL é possível definir explicitamente os limites de uma transação.

Leia mais

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo CONCORRÊNCIA 1. Introdução Recursos exclusivos Não necessita controle Abundância de recursos compartilhados Controle necessário mas mínimo Harmonia, provavelmente não haverá conflito Recursos disputados

Leia mais

Consultoria e Treinamento em Bancos de Dados Relacionais

Consultoria e Treinamento em Bancos de Dados Relacionais Tabela de conteúdos CREATE TABLE AS...1 CREATE DOMAIN...1 Funções de dados...2 Funções de data e hora...2 Funções de agregação...3 Expressões condicionais...4 CASE...4 COALESCE...4 NULLIF...4 Controle

Leia mais

Oracle 10g Dicas de PL/SQL. Conteúdo

Oracle 10g Dicas de PL/SQL. Conteúdo Oracle 10g Dicas de PL/SQL Conteúdo Objetivos... 2 Comentários... 2 Declarações... 2 Conversões de variáveis... 2 DDL Criar, alterar ou apagar tabelas Create, Alter or Drop table... 3 Restrições na criação

Leia mais

Tarefa Orientada 19 Triggers

Tarefa Orientada 19 Triggers Tarefa Orientada 19 Triggers Objectivos: Criar triggers AFTER Criar triggers INSTEAD OF Exemplos de utilização Os triggers são um tipo especial de procedimento que são invocados, ou activados, de forma

Leia mais

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl AVALIAÇÃO DA QUALIDADE DO CÓDIGO FONTE ESCRITO EM PL/SQL Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento

Leia mais

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso): TRANSAÇÕES 1. Visão Geral Uma transação é uma unidade lógica de trabalho (processamento) formada por um conjunto de comandos SQL cujo objetivo é preservar a integridade e a consistência dos dados. Ao final

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

Controle de transações em SQL

Controle de transações em SQL Transações Controle de transações em SQL Uma transação é implicitamente iniciada quando ocorre uma operação que modifica o banco de dados (INSERT, UPDATE ou DELETE). Uma transação pode terminar normalmente

Leia mais

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

Monitoria GDI Aula Prática. DML + PL/SQL parte 1 Monitoria GDI Aula Prática DML + PL/SQL parte 1 DML linguagem de manipulação de dados SQL Estrutura básica de uma consulta SQL SELECT Coluna1[,Coluna2[,Coluna3[,...]]] FROM Tabela1[,Tabela2[,...]] WHERE

Leia mais

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos Bases de Dados Stored procedures e triggers Introdução às funções e procedimentos SQL suporta funções e procedimentos úteis com tipos de dados específicos p.ex. objectos geométricos, imagens intersecção

Leia mais

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) 8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) Nos itens anteriores vimos transações do tipo explícitas, ou seja, aquelas que iniciam com BEGIN TRANSACTION. As outras

Leia mais

PostgreSQL. www.postgresql.org. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

PostgreSQL. www.postgresql.org. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br PostgreSQL www.postgresql.org André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br Características Licença BSD (aberto, permite uso comercial) Multi-plataforma (Unix, GNU/Linux,

Leia mais

2008.1. A linguagem SQL

2008.1. A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL PL/SQL Laboratório de Bases de Dados PL/SQL Program Language SQL linguagem de programação da Oracle que permite processar dados armazenados no banco de dados Exemplos de operações permitidas alterar, remover,

Leia mais

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO.

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO. Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Curso Oracle 10g Prof. MSc. Luciano Blomberg lblomberg@uol.com.br 2011/1

Leia mais

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures) PROCEDIMENTOS ARMAZENADOS (Stored Procedures) 1. Introdução Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a

Leia mais

Formação Oracle Completa

Formação Oracle Completa PROPOSTA COMERCIAL Formação Oracle Completa Proposta PR140505 140505-01 5 de Maio de 2014 05/05/14 Dextraining Treinamentos em TI Página 1 de 14 1 A Dextraining A Dextra foi fundada em 1995, já com a missão

Leia mais

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

FUNCTION ) RETURNS INTEGER AS $$ DECLARE PERFORM O comando PERFORM permite a execução de um comando SELECT desprezando o resultado do comando. PERFORM query; A variável especial FOUND é definida como verdadeiro se a instrução produzir pelo menos

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

SQL. Hélder Antero Amaral Nunes

SQL. Hélder Antero Amaral Nunes SQL Hélder Antero Amaral Nunes 2 Introdução Desenvolvida pelo departamento de pesquisa da IBM na década de 1970 (System R); Linguagem padrão de BD Relacionais; Apresenta várias padrões evolutivos: SQL86,

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 02 AT02 Diversos I 1 Indice ESQUEMAS NO BANCO DE DADOS... 3 CRIANDO SCHEMA... 3 CRIANDO TABELA EM DETERMINADO ESQUEMA... 4 NOÇÕES BÁSICAS SOBRE CRIAÇÃO E MODIFICAÇÃO

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

PostgreSQL 8.0. Diogo Biazus

PostgreSQL 8.0. Diogo Biazus PostgreSQL 8.0 Diogo Biazus PostgreSQL 7.X Totalmente ACID MVCC Tipos e operadores customizáveis Diversas linguagens procedurais Hot backup Código aberto (BSD) Facilidade de extensão PL/pgSQL, PL/Python,

Leia mais

Tópicos Avançados de Bases de Dados Instituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2005/2006

Tópicos Avançados de Bases de Dados Instituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2005/2006 Programa de TABD 2004/2005 Componente teórica Tópicos Avançados de Bases de Dados Revisão e complemento de bases de dados relacionais Revisão de conceitos básicos Transacções e controlo de concorrência

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL Criar uma base de dados (criar um banco de dados) No mysql: create database locadora; No postgresql: createdb locadora Criar

Leia mais

Banco de Dados Avançados Banco de Dados Ativo

Banco de Dados Avançados Banco de Dados Ativo Universidade Federal de Pernambuco Centro de Informática Banco de Dados Avançados Banco de Dados Ativo Equipe: Felipe Cavalcante Fernando Kakimoto Marcos Corrêa Sumário 1. Mini-Mundo... 3 1.1 Entidades...

Leia mais

Controle de Concorrência. Banco de Dados II Profa. Késsia R. C. Marchi

Controle de Concorrência. Banco de Dados II Profa. Késsia R. C. Marchi Controle de Concorrência Banco de Dados II Profa. Késsia R. C. Marchi Transação Transação é uma unidade lógica de trabalho, envolvendo diversas operações de bancos dados. C. J. Date Uma transação inicia-se,

Leia mais

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS No Instituto Federal do Paraná tounou-se necessário o armazenamento de certas informações para controle de pessoal. Para armazenar tais dados é necessário saber que:

Leia mais

Transações Seguras em Bancos de Dados (MySQL)

Transações Seguras em Bancos de Dados (MySQL) Transações Seguras em Bancos de Dados (MySQL) Índice Entendendo os storage engines do MySQL 5 1 As ferramentas 1 Mais algumas coisas que você deve saber 1 Com a mão na massa 2 Mais ferramentas Usando o

Leia mais

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL Carga horária: 32 Horas Pré-requisito: Para que os alunos possam aproveitar este treinamento ao máximo, é importante que eles tenham participado dos treinamentos

Leia mais

Cada banco de dados Oracle possui uma lista de usuários válidos, identificados por USERNAMES.

Cada banco de dados Oracle possui uma lista de usuários válidos, identificados por USERNAMES. SEGURANÇA DE USUÁRIOS Cada banco de dados Oracle possui uma lista de usuários válidos, identificados por USERNAMES. Todos os usuários são cadastrados no Dicionário de Dados do Banco em tabelas e views

Leia mais

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia Bases de Dados 2012/2013 Restrições de Integridade em SQL Helena Galhardas Bibliografia Raghu Ramakrishnan, Database Management Systems, Cap. 3 e 5 1 1 Sumário Restrições de Integridade (RIs) em SQL Chave

Leia mais

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais 1 LINGUAGEM SQL SQL Server 2008 Comandos iniciais SQL - STRUCTURED QUERY LANGUAGE Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação.

Leia mais

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010 BANCO DE DADOS: SQL UERN - Universidade do Estado do Rio Grande do Norte. Departamento de Ciências da Computação. 27 de janeiro de 2010 índice 1 Introdução 2 3 Introdução SQL - Structured Query Language

Leia mais

Transações. Prof. Márcio Bueno. {bd2tarde,bd2noited}@marciobueno.com. Material do Prof. Paulo Pires

Transações. Prof. Márcio Bueno. {bd2tarde,bd2noited}@marciobueno.com. Material do Prof. Paulo Pires Transações Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com Material do Prof. Paulo Pires Introdução a Transações SGBD sistema de processamento de operações de acesso ao BD SGBDs são em geral multi-usuários

Leia mais

Bancos de Dados I. Integridade semântica

Bancos de Dados I. Integridade semântica Bancos de Dados I PUC-Rio Departamento de Informática (DI) Eng./Ciência da Computação e Sist. Informação Contrôle de Integridade em SGBDs: procedimentos armazenados, gatilhos e funções Prof. sergio@inf.puc-rio.br

Leia mais

um mecanismo, chamado de perfil, para controlar o limite desses recursos que o usuário pode

um mecanismo, chamado de perfil, para controlar o limite desses recursos que o usuário pode 1 ADMINISTRAÇÃO DE USUÁRIOS NO SGBD ORACLE 11G JUVENAL LONGUINHO DA SILVA NETO 1 IREMAR NUNES DE LIMA 2 Resumo: Este artigo apresenta como criar, modificar e excluir usuários, privilégios, atribuições

Leia mais

Triggers no PostgreSQL

Triggers no PostgreSQL Triggers no PostgreSQL Traduzido do manual do PostgreSQL Pode-se utilizar PL/pqSQL para a definição de triggers (gatilhos). Um procedimento do tipo trigger é criado com o comando CREATE FUNCTION, declarando

Leia mais

MANUAL INSTALAÇÃO WEB SERVICE

MANUAL INSTALAÇÃO WEB SERVICE MANUAL INSTALAÇÃO WEB SERVICE Recebimento de dados pelo Hospital Versão 1.1 2/9/2014 Contato suporte@gtplan.com.br Índice Introdução... 2 Requerimentos para instalação do Web Service... 2 Instalação...

Leia mais

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04 BD Oracle SGBD Oracle Licenciatura em Engenharia Informática e Computação Bases de Dados 2003/04 BD Oracle Introdução aos SGBD Base de Dados Colecção de dados que descrevem alguma realidade Sistema de

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

Quando se seleciona os modos OS ou XML, arquivos são criados com os registros de auditoria, eles se localizam parâmetro audit_file_dest.

Quando se seleciona os modos OS ou XML, arquivos são criados com os registros de auditoria, eles se localizam parâmetro audit_file_dest. Auditoria é a habilidade do banco de dados Oracle poder gerar logs de auditoria (XML, tabelas, arquivos de SO, ) em atividades suspeitas do usuário, como por exemplo: monitorar o que um determinado usuário

Leia mais

Introdução ao SQL. O que é SQL?

Introdução ao SQL. O que é SQL? Introdução ao SQL 1 O que é SQL? Inicialmente chamada de Sequel, SQL (Structured Query Language), é a linguagem padrão utilizada para comunicar-se com um banco de dados relacional. A versão original foi

Leia mais

2. Criar um bloco PL/SQL anônimo para imprimir as tabuadas abaixo: 5 X 10 = 50 5 X 2 = 10... 10 X 10 = 100 1 X 2 = 2...

2. Criar um bloco PL/SQL anônimo para imprimir as tabuadas abaixo: 5 X 10 = 50 5 X 2 = 10... 10 X 10 = 100 1 X 2 = 2... 1. Criar um bloco PLSQL anônimo para imprimir a tabuada abaixo: 5 X 1 = 5 5 X 2 = 10... 5 X 10 = 50 V_N CONSTANT NUMBER(2) := 5; FOR I IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE(V_N ' X ' I ' = ' V_N*I); 2. Criar

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

INTRODUÇÃO AO PL/SQL

INTRODUÇÃO AO PL/SQL INTRODUÇÃO AO PL/SQL ALEX JOSE SILVA RECIFE/2015 Índice Introdução Ao Pl/Sql...3 Entendendo a linguagem...4 Principais características da linguagem PL/SQL...5 Blocos de código...5 Declaração de variáveis...5

Leia mais

estiver abaixo ou igual ao mínimo, um novo pedido é acrescentado a uma relação pedidos.

estiver abaixo ou igual ao mínimo, um novo pedido é acrescentado a uma relação pedidos. TRIGGERS Um trigger é uma instrução que o sistema executa automaticamente como um efeito colateral de uma modificação no banco de dados. Para criar um mecanismo de trigger, temos de cumprir dois requisitos:

Leia mais

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL Oracle University Entre em contato: 0800 891 6502 Banco de Dados Oracle 10g: Introdução à Linguagem SQL Duração: 5 Dias Objetivos do Curso Esta classe se aplica aos usuários do Banco de Dados Oracle8i,

Leia mais

Histórico de revisões

Histórico de revisões Apostila 3 Histórico de revisões Data Versão Descrição Autor 30/09/2011 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Exclusão de registros Consultas por Dados de Resumo Group by / Having Funções

Leia mais

GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL

GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/sbd UFU/FACOM/BCC Página 2 Prgrama Teórico/Prático - SQL Linguagem

Leia mais

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza PHP e Banco de Dados progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net PHP e Banco de Dados É praticamente impossível

Leia mais

CIÊNCIA E TECNOLOGIA DO RIO

CIÊNCIA E TECNOLOGIA DO RIO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE BANCO DE DADOS II Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso de Tecnologia

Leia mais

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011 Banco de Dados I Aula 12 - Prof. Bruno Moreno 04/10/2011 Plano de Aula SQL Definição Histórico SQL e sublinguagens Definição de dados (DDL) CREATE Restrições básicas em SQL ALTER DROP 08:20 Definição de

Leia mais

Elementos Básicos de PL

Elementos Básicos de PL Banco de Dados PL Fernando Fonseca Ana Carolina Salgado PLSQL Procedural LanguageSQL Linguagem de programação sofisticada, utilizada para ter acesso a uma base de dados Oracle a partir de vários ambientes

Leia mais

MER e Conceitos gerais

MER e Conceitos gerais MER e Conceitos gerais IBGE 1)O Modelo de Entidades Relacionamentos, segundo Paulo Cougo, descreve o mundo como:... cheio de coisas que possuem características próprias e que se relacionam entre si. Essas

Leia mais

SQL (Structured Query Language)

SQL (Structured Query Language) (Structured Query Language) I DDL (Definição de Esquemas Relacionais)... 2 I.2 Domínios... 2 I.3 Criação de Tabelas... 2 I.4 Triggers... 4 II DML Linguagem para manipulação de dados... 5 II.2 Comando SELECT...

Leia mais

trigger insert, delete, update

trigger insert, delete, update 1 Um trigger é um conjunto de instruções SQL armazenadas no catalogo da BD Pertence a um grupo de stored programs do MySQL Executado quando um evento associado com uma tabela acontece: insert, delete,

Leia mais

Introdução ao SQL. Aécio Costa

Introdução ao SQL. Aécio Costa Aécio Costa A linguagem SQL é um padrão de linguagem de consulta comercial e possui as seguintes partes: Linguagem de definição de dados (DDL) Linguagem interativa de manipulação de dados (DML) Definição

Leia mais

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com Um dos grandes diferenciais do PostgreSQL em relação à maioria dos outros sistemas de bancos de dados é a presença de diversas linguagens

Leia mais

SQL comando SELECT. SELECT [DISTINCT] FROM [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda. SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]

Leia mais

Noções de Processamento de Transações, Controle de Concorrência e Recuperação de Falhas

Noções de Processamento de Transações, Controle de Concorrência e Recuperação de Falhas Noções de Processamento de, e Banco de Dados I Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Transação

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 03 AT03 Diversos II Page 1 of 25 Indice EXEMPLOS COM GROUP BY E COM A CLÁUSULA HAVING - TOTALIZANDO DADOS... 3 GROUP BY... 3 Cláusula HAVING com GROUP BY... 5 ENTENDENDO

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL Bases de Dados 2012/2013 Funções/procedimentos e triggers em PostgreSQL Helena Galhardas Bibliografia Manual referência PostgreSQL http://www.postgresql.org/docs/9.2/static/ plpgsql.html http://www.postgresql.org/docs/9.2/static/

Leia mais

EXEMPLOS DE COMANDOS NO SQL SERVER

EXEMPLOS DE COMANDOS NO SQL SERVER EXEMPLOS DE COMANDOS NO SQL SERVER Gerenciando Tabelas: DDL - DATA DEFINITION LANGUAG Criando uma tabela: CREATE TABLE CLIENTES ID VARCHAR4 NOT NULL, NOME VARCHAR30 NOT NULL, PAGAMENTO DECIMAL4,2 NOT NULL;

Leia mais

SQL DDL Criando Tabelas e Restrições

SQL DDL Criando Tabelas e Restrições SQL DDL Criando Tabelas e Restrições Fernanda Baião UNIRIO Material parcialmente extraído a partir das notas de aula de Maria Luiza M. Campos, Arnaldo Rocha e Maria Cláudia Cavalcanti Comandos de Definição

Leia mais

Faculdade Lourenço Filho - ENADE 2011-1

Faculdade Lourenço Filho - ENADE 2011-1 1. Quando se constrói um banco de dados, define-se o modelo de entidade e relacionamento (MER), que é a representação abstrata das estruturas de dados do banco e seus relacionamentos. Cada entidade pode

Leia mais

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS Profº Erinaldo Sanches Nascimento Introdução Cursor é usado para percorrer um conjunto de linhas retornadas por uma consulta

Leia mais

Projeto de Banco de Dados

Projeto de Banco de Dados Projeto de Banco de Dados Prof. Marcelo Siedler Objetivos do documento: Apresentar os conceitos de stored procedutes e funções. Exercícios. Referência: http://dev.mysql.com/doc/refman/4.1/pt/stored-procedures.html

Leia mais

Integridade dos Dados

Integridade dos Dados 1 Integridade dos Dados Integridade dos Dados Melissa Lemos melissa@inf.puc-rio.br A integridade dos dados é feita através de restrições, que são condições obrigatórias impostas pelo modelo. Restrições

Leia mais