Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
ADMINISTRANDO ESQUEMAS DE OBJETOS
Descrição
O comando CREATE SCHEMA cria um esquema no banco de dados corrente. O nome
do esquema deve ser distinto do nome de todos os outros esquemas existentes no
banco de dados corrente. Um esquema é essencialmente um espaço de nomes:
contém objetos com nome (tabelas, tipos de dado, funções e operadores), cujos
nomes podem ser iguais aos de outros objetos existentes em outros esquemas. Os
objetos com nome são acessados "qualificando" seus nomes usando o nome do
esquema como prefixo, ou definindo um caminho de procura que inclua os esquemas
desejados. O comando CREATE que especifica um nome de objeto não qualificado cria
o objeto no esquema corrente (o primeiro do caminho de procura, que pode ser
determinado pela função current_schema ).
Opcionalmente, o comando CREATE SCHEMA pode incluir subcomandos para criar
objetos no novo esquema. Estes subcomandos são tratados, essencialmente, da
mesma maneira como são tratados os comandos em separado submetidos após a
criação do esquema, exceto que, se for utilizada a cláusula AUTHORIZATION, todos os
objetos criados pertencerão a este usuário.
Parâmetros
nome_do_esquema
O nome do esquema a ser criado. Se for omitido, será usado o nome do usuário
como nome do esquema. O nome não pode começar por pg_, porque estes
nomes são reservados para os esquemas do sistema.
nome_do_usuário
O nome do usuário que será o dono do esquema. Se for omitido, tem como
padrão o usuário que está executando o comando. Somente os superusuários
podem criar esquemas pertencentes a outros usuários.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
elemento_do_esquema
Um comando SQL definindo um objeto a ser criado no esquema. Atualmente,
somente CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE,
CREATE TRIGGER e GRANT são aceitos como cláusula no comando CREATE
SCHEMA. Os objetos de outros tipos podem ser criados por comandos em
separado, após o esquema ter sido criado.
Observações
Para criar um esquema o usuário deve possuir o privilégio CREATE no banco de dados
corrente (É claro que os superusuários não são afetados por esta exigência).
Exemplos
Criar um esquema:
CREATE SCHEMA meu_esquema;
Criar um esquema para o usuário antonio; o esquema também se chamará antonio:
CREATE SCHEMA AUTHORIZATION antonio;
Criar um esquema e criar uma tabela e uma visão nele:
CREATE SCHEMA hollywood
CREATE TABLE filmes (titulo text, lancamento date, premios text[])
CREATE VIEW premiados AS
SELECT titulo, lancamento FROM filmes WHERE premios IS NOT NULL;
Deve ser observado que os subcomandos individuais não terminam por ponto-evírgula.
Abaixo está mostrada uma forma equivalente para se obter o mesmo resultado:
CREATE SCHEMA hollywood;
CREATE TABLE hollywood.filmes (titulo text, lancamento date, premios text[]);
CREATE VIEW hollywood.premiados AS
SELECT titulo, lancamento FROM hollywood.filmes WHERE premios IS NOT
NULL;
Nomeação de Objetos no Oracle
O comprimento de nomes deve ser de 1 a 30 bytes, com as seguintes exceções:
Nomes
de
bancos
de
dados
são
limitados
a
8
bytes.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Os nomes dos links de dados pode ser tão longo quanto 128 bytes.
nomes
sem
aspas
não
podem
ser
palavras
Oracle
reservados.
nomes sem aspas deve iniciar com um caractere alfabético a partir do seu caráter de
banco
de
dados
definido.
Citado nomes não são recomendados.
Tipos de Dados no Oracle
• CHAR: Os dados de comprimento fixo de caracteres de tamanho bytes ou caracteres.
O tamanho máximo é de 2.000 bytes ou caracteres, o padrão eo tamanho mínimo é de
1
byte.
• BYTE indica que a coluna tem semântica comprimento bytes (isto é, o comprimento
da
coluna
é
medida
em
bytes).
CHAR indica que a coluna tem semântica de caracteres (isto é, trata strings como uma
seqüência
de
caracteres).
• VARCHAR2: comprimento variável seqüência de caracteres com comprimento
máximo de bytes ou caracteres de tamanho. O tamanho máximo é de 4.000 bytes.
Você
deve
especificar
o
tamanho
para
VARCHAR2.
• DATA: data válida entre 01 de janeiro de 4712 (BC), até 31 de dezembro de 9999
(AD). Ele também
armazena o tempo (horas, minutos e segundos).
: Número de p precisão e escala s. A precisão pode variar de 1 a 38. A escala pode
variar de -84 a 127.
• BINARY_FLOAT: 32-bit número de ponto flutuante. Este tipo de dados exige 5 bytes,
incluindo
o
byte
de
comprimento.
• BINARY_DOUBLE: 64-bit número de ponto flutuante. Este tipo de dados requer 9
bytes.
• FLOAT (p): American National Standards Institute (ANSI) tipo de dados. O tipo de
dados float é um número de ponto flutuante com precisão binário p. A precisão padrão
para
este
tipo
de
dados
binário
é
de
126
ou
38
decimal.
•
INTEGER:
equivalente
ao
número
(p,
0)
• NCHAR (comprimento): tipo de dados somente Unicode. Quando você cria uma
tabela com uma coluna NCHAR, você define o tamanho da coluna em caracteres. Você
define o caráter nacional definido quando você criar seu banco de dados. O
comprimento máximo de uma coluna é determinada pela definição do conjunto de
caracteres nacionais. As especificações de largura do tipo de dados nchar se referem
ao número de caracteres. O tamanho da coluna máxima permitida é de 2.000 bytes.
Se você inserir um valor que é menor que o comprimento da coluna, o banco de dados
Oracle almofadas o valor com espaços em branco para comprimento da coluna cheia.
Você não pode inserir um valor em uma coluna CHAR NCHAR, nem você pode inserir
um
valor
NCHAR
em
uma
coluna
CHAR.
• NVARCHAR2 (tamanho byte [| CHAR]): somente Unicode tipo de dados. É como
NCHAR exceto que sua duração máxima é de 4.000 bytes e não é completado com
brancos.
• Longos: Dados de caracteres de comprimento variável, de até 2 GB (ou 231-1
bytes). O tipo de dados LONG está obsoleta; usar o objeto grande (LOB) tipo de dados
em
vez
disso.
• LONG RAW: dados binários brutos de comprimento variável de até 2 GB
• RAW (tamanho): dados binários brutos de size bytes de comprimento. O tamanho
máximo é de 2.000 bytes. Você deve especificar o tamanho para um valor bruto.
• ROWID: Base string-64 representa o endereço exclusivo de uma linha no banco de
dados. Este tipo de dados é principalmente para os valores retornados pela
pseudocoluna
ROWID.
• UROWID: Base string-64 representando o endereço lógico de uma linha de uma
tabela organizada por índice. O tamanho é opcional do tamanho de uma coluna do tipo
UROWID. O tamanho máximo eo padrão é 4.000 bytes. UROWID tipo de dados em
uma coluna tem um tipo de código de 1 byte seguido pela ID da linha de um tipo de
correspondência. Os três tipos são ID linha física, ID da linha lógica, e as identificações
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
de linha externa (que ocorrem quando se selecciona uma coluna de ID da linha
durante um dblink através de um gateway de serviços heterogêneos).
•
BLOB:
objeto
grande
binário
• CLOB: Personagem grande objeto que contenha caracteres de byte único ou
multibyte. Ambos largura fixa e conjuntos de caracteres de largura variável são
suportadas, e ambos utilizam o banco de dados de caráter CHAR set.
•NCLOB: Personagem grande objeto que contenha caracteres Unicode. Ambos largura
fixa e conjuntos de caracteres de largura variável são suportadas, e ambos utilizam o
banco de dados de caráter NCHAR set. Este tipo de dados armazena os dados de
caráter nacional definido Nota: O tamanho máximo para todos os tipos de dados LOB
(BLOB, CLOB e NCLOB) é (4 GB - 1) * (o valor do pedaço).?. ? Pedaço é um atributo
opcional que você pode definir quando se define um LOB. PEDAÇO especifica o número
de bytes a ser alocada para manipulação de LOB. Se o tamanho não é um múltiplo do
tamanho do bloco de banco de dados, as rodadas de banco de dados até o tamanho
em bytes para o próximo múltiplo. ? Por exemplo, se o tamanho do bloco de banco de
dados é 2048 eo tamanho do bloco é 2050, o banco atribui 4.096 bytes (2 blocos). O
valor máximo é 32768 (32 KB), que é o maior banco de dados Oracle bloco tamanho
permitido. O tamanho padrão de bloco é um bloco de banco de dados Oracle.
• BFILE: Contém um localizador para um grande arquivo binário armazenado fora do
banco de dados. Ele permite que fluxo de bytes I / O acesso a LOBs externos que
residem no servidor de banco de dados. O tamanho máximo é de 4 GB.
• TIMESTAMP (fractional_seconds_precision): Especifica o ano, mês, dia e valores de
data,
bem
como
hora, minuto e segundo valores
de
tempo,
onde
fractional_seconds_precision é o número de dígitos na parte fracionária de um
segundo. Os valores aceitos são 0-9. O padrão é 6.
Integridades de Banco de Dados
NOT NULL: Por padrão, todas as colunas em uma tabela permitir valores nulos. O nulo
palavra significa a ausência de um valor. A restrição NOT NULL requer que uma coluna
de uma tabela deve conter valores nulos. Por exemplo, você pode definir uma restrição
NOT NULL a exigir que um valor seja de entrada na coluna LAST_NAME para cada linha
da
tabela
EMPREGADOS.
UNIQUE-chave: A restrição de integridade chave UNIQUE exige que cada valor em
uma coluna ou conjunto de colunas (chave) ser exclusivo, ou seja, não há duas linhas
de uma tabela tem valores duplicados em uma coluna especificada ou conjunto de
colunas. Por exemplo, uma restrição UNIQUE chave é definido na coluna
department_name da tabela de serviços para desautorizar as linhas com nomes
duplicados departamento. Com exceção de circunstâncias especiais, esta é aplicada
com
um
índice
exclusivo.
PRIMARY KEY: Cada tabela no banco de dados pode ter no máximo uma restrição
PRIMARY KEY. Os valores no grupo de uma ou mais colunas que estão sujeitas a essa
restrição constitui o identificador exclusivo da linha. Com efeito, cada linha é chamado
pelos
seus
valores
de
chave
primária.
As restrições de verificação: A restrição de integridade CHECK em uma coluna ou
conjunto de colunas exige que uma determinada condição ser verdadeira ou
desconhecidos para cada linha da tabela
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Estados de uma Constraint
DISABLE NOVALIDATE: Nova, bem como os dados existentes não podem se conformar
com a restrição, porque não está marcada. Isto é frequentemente usado quando os
dados são de uma fonte, já validados ea tabela é somente leitura, para que os dados
não é nova a ser inserido na tabela. NOVALIDATE é utilizado no armazenamento de
dados situações em que os dados já foram limpos. Nenhuma validação é necessário,
poupando
tempo.
DISABLE VALIDATE: Se uma restrição estiver neste estado, a modificação das colunas
da restrição não é permitido porque seria incoerente de validar os dados existentes e
permitir que dados não verificados para inserir a tabela. Isso é muitas vezes usado
quando os dados existentes deve ser validado, mas não modificados e, quando o índice
não
é
normalmente
necessário
para
o
desempenho.
ENABLE NOVALIDATE: Novos dados está em conformidade com a restrição, mas os
dados existentes está em um estado desconhecido. Este é freqüentemente usado
quando se sabe que os dados limpos e em conformidade existe na tabela de modo que
não há necessidade de validação. No entanto, novas violações não são autorizados a
entrar
no
sistema.
ENABLE VALIDATE: Ambos os dados novos e existentes, em conformidade com a
restrição. Este é o estado típico e padrão de uma restrição.
O Comando Truncate
Este comando exclui todas as linhas de uma tabela ou de uma lista de tabelas de
forma mais rápida que o comando DELETE tradicional. Apenas o owner de uma tabela
pode
eliminar
seus
dados
com
o
comando
TRUNCATE.
É recomendado o prudência no uso deste comando, especialmente com a cláusula
CASCADE,
pois
informações
relevantes
podem
ser
eliminadas.
Sintaxe:
TRUNCATE
[
TABLE
]
name
[,
...]
[
CASCADE
|
RESTRICT
]
A cláusula CASCADE elimina tabelas referenciadas pela tabela que sofre o TRUNCATE.
A cláusula RESTRICT é o padrão e faz o TRUNCATE apenas da tabela explicitamente
citada no comando, retornando erro caso haja alguma violação de restrição de
integridade. Não é permitido TRUNCATE se a tabela truncada é referenciada por uma
tabela
filha
através
de
foreign
key:
ERROR: cannot truncate a table referenced in a foreign key constraint
SQL
state:
0A000
Detail:
Table
"tstdel3"
references
"tstdel".
Hint: Truncate table "tstdel3" at the same time, or use TRUNCATE ... CASCADE.
Alguns
1
-
exemplos:
Exclusão
de
registros
de
TRUNCATE
2
-
Exclusão
TRUNCATE
uma
tabela
com
a
cláusula
TABLE
de
registros
com
TABLE
tstdel;
referência
a
um
esquema
public.tstdel;
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
3
-
Sintaxe
smplificada
TRUNCATE
4
-
tstdel;
Exclusão
de
mais
de
TRUNCATE
5
uma
tabela
ao
mesmo
tempo
tstdel,
-
Exclusão
com
tstdel2;
cláusula
CASCADE
TRUNCATE tstdel CASCADE;
INDICES NO ORACLE
No geral, índices B*Tree serão usados se:
A cardinalidade (números de valores distintos) em uma coluna é grande
O número de linhas em uma tabela é grande
A coluna é usada em cláusulas WHERE e JOIN.
No geral, índices Bitmap serão usados se:
A cardinalidade (números de valores distintos) em uma coluna é pequeno
(como masculino/feminino
O número de linhas em uma tabela é grande
A coluna é usada em operações de álgebra booleana (AND/OR/NOT) .
Um índice é um objeto de um esquema que pode acelerar a recuperação de linhas
usando um ponteiro. Os índices podem ser criados de duas formas: De maneira
explícita ou implícita. Caso não exista um índice associado a uma coluna, ocorrerá uma
análise em toda a tabela. Um índice fornece acesso direto e rápido às linhas em uma
tabela. Seu objetivo é reduzir a necessidade de I/O do disco usando um caminho
indexado para localizar dados de forma mais rápida. O índice é utilizado e mantido
automaticamente pelo Oracle Server. Após a criação de um índice, não é necessária
nenhuma atividade direta do usuário. Os índices são lógica e fisicamente
independentes da tabela que indexam. Isso significa que eles podem ser criados e
eliminados a qualquer momento e não têm nenhum efeito sobre as tabelas-base ou
outros índices.
É muito importante lembrar que ao eliminar uma tabela, os índices correspondentes
também são eliminados.
Podemos criar índices e manipular estes índices, sendo que neste momento iremos ver
como criar um índice e vamos focar como manipular os índices nas TableSpaces de
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
dados ou em qualquer outra que não seja a TableSpaces de índices. Pois os índices
tem que está na (as) TableSpaces de índice (es).
•
Vamos criar um índice.
CREATE INDEX nome_indice ON nome_tabela(lista_coluna (as));
Como você pode observar no exemplo acima, é bem facil criar um índice.
Mais o que realmente nos interessa neste momento é como manipular os índices nas
TableSpaces erradas?
Antes de tudo ou qualquer coisa, temos que saber onde os índices estão e em quais
TableSpaces eles se encontram?
•
Vamos consultar onde se encontram os índices e quantos são:
SET
SET
COL segment_name FORMAT a30
LINESIZE
PAGES
SELECT
tablespace_name,count(*)
indices
WHERE owner=’USUARIO’ GROUP BY tablespace_name;
200
100
FROM
dba_indexes
Observe no exemplo acima que antes do select estou setando alguns parâmetros para
melhor exibição do resultado. Neste exemplo acima irei identificar quantos índices e
onde eles estão.
Após a identificação de onde estão e quantos são os índices fora da TableSpaces de
índices, precisamos fazer um rebuild dos índices para a TableSpaces de índice.
•
Vamos fazer o rebuild dos índices:
SELECT
‘alter
index
‘||owner||’.'||index_name||’
NomeDaTableSpaceDeIndices;’
FROM
WHERE tablespace_name = ‘TableSpaceDados’;
rebuild
tablespace
dba_indexes
Obeserve no script acima que ele já deixará no formato para você realizar o rebuild
dos índices, após a execução do script acima é só você copiar o resultado na tela e
depois colar na tela logo em seguida e você verá que o rebuild será realizado. Com
este script acima agente ganha tempo em ter que procurar e depois está realizando
novo script para fazer o rebuild.
Criando Visões (Views) no Oracle
Uma View funciona de forma semelhante a uma tabela. É utilizada em comandos
SELECT, INSERT, UPDATE e DELETE, para recuperação e manipulação de dados
(com restrições), porém, não armazena esses dados.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Este objeto tem suas linhas e colunas calculadas dinamicamente através de um
SELECT pré-estabelecido, cada vez que solicitamos. Apenas a sua definição é
armazenada no dicionário de dados.
Podemos dizer que se trata de uma tabela virtual, pois não possui linhas próprias, mas
sim as obtém em tempo de execução e as disponibiliza em memória para acesso por
uma query.
Como criar Views:
Create [or replace]
[with read only];
view
<nome
da
view>
as
<Instruções
sql>
Exemplo: Criando e visualizando as informações de uma view:
Create view estoque
where pmedio < 1000;
as
select
codprod,
descricao
from
produtos
Alterando uma View:
O comando REPLACE recria uma view já existente. Deve ser utilizado para alterar
uma visão existente sem necessidade de apagá-la. É utilizado também para atribuir
nova permissão e privilégios.
Create or replace view estoque as select codprod, descricao, pvenda preço
from produtos where pmedio < 1000;
Visualizando uma View:
Select
Desc estoque;
*
from
estoque;
Excluindo uma View:
O comando DROP VIEW exclui uma view do dicionário de dados. Nenhum efeito
ocorrerá sobre as tabelas referenciadas, bastando para isso ter apenas o privilégio
DROP VIEW ou DBA.
Drop view estoque;
A Cláusula WITH CHECK OPTION:
Através da cláusula WITH CHECK OPTION, podemos garantir que os dados inseridos
ou atualizados numa tabela através de uma view, poderão ser visualizados através da
própria view com esta opção.
Exemplo:
Create or replace view estoque as select codprod, descricao, pvenda preço
from produtos where pmedio < 1000 with check option estoque;
A Cláusula WITH READ ONLY:
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
Através da cláusula WITH READ ONLY podemos impedir operações de DML sobre a
view, restringindo desta forma a view apenas à leitura. A cláusula WITH READ ONLY
indica que apenas a operação de consulta (SELECT) será permitida na view e, desse
modo, operações de atualização, inserção e exclusão não serão permitidas.
Exemplo:
Create or replace view estoque as select codprod, descricao, pvenda preço
from produtos where pmedio < 1000 with read only;
A view está protegida para operações DML, portanto em qualquer tentativa de
comandos referentes a DML (inserção, atualização e deleção) ocorrerão erros.
Checando as Views no Dicionário de Dados:
O Dicionário de Dados do Oracle nos permite checar as views criadas, bastando para
isso usar o comando:
Desc User_Views;
Tabelas Temporárias no Banco de Dados Oracle
DEFINIÇÃO
Uma tabela temporária é uma tabela com vida útil de uma sessão ou transação. Ela
está vazia quando a sessão ou transação começa e descarta os dados ao fim da sessão
ou transação. Uma tabela temporária é associada à transação. Isto significa que ao
término da transação os dados da tabela são perdidos, porém sua descrição
permanece gravada no banco de dados mesmo após a mudança de sessão.
Nesta solução, o que é temporário é o armazenamento dos dados. Com este tipo de
tabela não temos necessidade de remover os dados ao término da transação. Podem
ser muito úteis na geração de dados de trabalho temporários. A seguir serão
mostrados dois exemplos: O primeiro (Listagem 1) de uma tabela temporária que é
associada à transação e o segundo (Listagem 2), de uma tabela temporária que é
associada à sessão.
SQL>
create
2
3
4 dat_cadas date);
global
temporary
(cod_prod
desc_prod
table
TEMP_PROD
number(5),
varchar2(30),
Table created.
SQL>
insert
2 values (1,'Mesa',sysdate);
1 row created.
SQL> select * from TEMP_PROD;
into
TEMP_PROD
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
COD_PROD
---------1 Mesa 18-MAR-05
DESC_PROD
------------------------------
DAT_CADAS
---------
SQL> commit;
Commit complete.
SQL> select * from TEMP_PROD;
no rows selected
SQL>
Name
------------------------------COD_PROD
DESC_PROD
DAT_CADAS DATE
desc
Null?
TEMP_PROD;
Type
---NUMBER(5)
VARCHAR2(30)
--------
SQL>
Listagem
1.
Tabela
temporária
por
transação
Neste primeiro exemplo foi criada uma tabela temporária associada à transação. Isto
significa que ao término da transação (commit ou rollback) os dados da tabela são
perdidos. No exemplo, utilizamos o comando commit para finalizar a transação. Note
que após executar o comando commit, o select seguinte não retorna nenhum registro,
porém a estrutura da tabela permanece gravada no banco de dados mesmo após a
mudança de sessão.
SQL>
create
global
temporary
2
(cod_prod
3
desc_prod
4 dat_cadas date) on commit preserve rows;
table
TEMP_PROD
number(5),
varchar2(30),
Table created.
SQL>
insert
2 values (100,'Computador',sysdate);
into
TEMP_PROD
1 row created.
SQL> select * from TEMP_PROD;
COD_PROD
---------100 Computador 18-MAR-05
DESC_PROD
------------------------------
SQL> commit;
Commit complete.
SQL> select * from TEMP_PROD;
DAT_CADAS
---------
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
COD_PROD
---------100 Computador 18-MAR-05
DESC_PROD
------------------------------
SQL>
Enter
Connected.
DAT_CADAS
---------
connect
password:
dados@data1w
*****
desc
Null?
TEMP_PROD;
Type
---NUMBER(5)
VARCHAR2(30)
DATE
SQL> select * from TEMP_PROD;
no rows selected
SQL>
Name
------------------------------COD_PROD
DESC_PROD
DAT_CADAS
Listagem
2.
--------
Tabela
temporária
por
sessão
Neste segundo exemplo, a tabela foi criada com a indicação de que após o término da
transação os dados deverão ser mantidos, ou seja, a tabela é temporária, porém seus
dados ficam disponíveis por toda a sessão independente de transação. Quando ocorre
o fim da sessão (disconnect e connect), os dados são removidos (ou liberados). Note
que no exemplo acima, após executar o comando connect, os dados da tabela foram
removidos, porém a estrutura da tabela permanece gravada no banco de dados
mesmo
após
a
mudança
de
sessão.
CARACTERÍSTICAS
Segundo Fernandes, as tabelas temporárias possuem as seguintes características:
• Sua definição é visível para todas as sessões, mas seus dados são visíveis e
acessíveis
somente
pela
sessão
que
os
inclui.
• O comando LOCK não tem efeito em tabelas temporárias uma vez que cada sessão
tem
acesso
exclusivo
a
seus
dados.
• Um comando TRUNCATE trunca somente os dados referentes à sessão do usuário.
•
Os
dados
são
criados
na
tablespace
temporária
do
usuário.
• Operações de Rollback to Savepoint são suportadas, mas os dados não são
recuperáveis caso ocorra um “crash” porque as modificações não são logadas
(gravadas
no
REDO
LOG).
• Podemos criar índices para uma tabela temporária usando o comando CREATE
INDEX.
Estes
índices
também
são
temporários.
• Podemos criar triggers para tabelas temporárias assim como views que utilizem
simultaneamente
tabelas
temporárias
e
permanentes.
• Os utilitários IMPORT e EXPORT podem exportar e importar a definição de uma
tabela
temporária,
porém
nenhum
dado
é
exportado.
• Da mesma forma, podemos replicar a definição de uma tabela temporária, mas não
podemos
replicar
seus
dados.
Pedro F. Carvalho
Analista de Sistemas
[email protected]
www.pedrofcarvlho.com.br
• Só podemos executar operações de DDL (ALTER TABLE, DROP TABLE, CREATE
INDEX, etc.) para a tabela temporária se não houver nenhuma tabela fazendo acesso a
ela.
• Uma tabela temporária associada à transação é acessível por uma determinada
transação e suas transações filha. Porém, uma tabela temporária associada à
transação não é acessível por duas transações simultâneas na mesma sessão, apesar
de
poder
ser
usada
por
transações
em
diferentes
sessões.
• Se uma transação do usuário faz um INSERT em uma tabela temporária, então
nenhuma de suas transações filhas pode usar a tabela temporária após isto.
• Se uma transação filha faz um INSERT em uma tabela temporária, ao fim da
transação filha, o dado associado com a tabela temporária é removido. Após isto, tanto
a transação do usuário quanto qualquer outra transação podem fazer acesso à tabela
temporária.
Download

Gerenciando Esquemas