SlideShare uma empresa Scribd logo
1 de 26
SQL Server | Módulo II
Obrigado pela presença!
Seção 4: Integridade de Dados
• Aula 1: Integridade de dados;
• Aula 2: Constraints;
• Aula 3: Triggers;
• Lab: Integridade de dados com constraints e triggers;
SQL Server - Módulo I 2
Aula 1: Integridade de dados
• Tipos de integridade de dados;
• Opções para garantir a integridade de dados;
SQL Server - Módulo I 3
Tipos de integridade de dados
• Integridade de domínio: define o tipo de informação válida para uma
coluna. Exemplo: tipo de dados, valores nulos, intervalos aceitos etc;
• Integridade de entidade: define o identificador único de uma tabela.
Exemplo: chave primária e índice único;
• Integridade referencial: define o relacionamento (link) entre tabelas
ou entre uma tabela e ela mesma. Exemplo: chave estrangeira;
SQL Server - Módulo I 4
Opções para integridade de dados
• Tipos de dados: definem o tipo de informação aceita em uma coluna;
• Rule: regras para determinar valores aceitos por uma coluna;
• Default: valor padrão de uma coluna quando seu valor for omitido;
• Constraints: mecanismo da Engine para integridade de dados;
• Triggers: tipo especial de procedure executada automaticamente ao
realizar modificações em uma tabela ou view;
SQL Server - Módulo I 5
Aula 2: Constraints
• Constraints;
• Key Constraints;
• Outras constraints;
• Integridade referencial em cascata;
• Observações sobre checagem de constraints;
SQL Server - Módulo I 6
Constraints
• DEFAULT: valor padrão de uma coluna, quando o mesmo for omitido;
• CHECK: verifica os valores aceitos pela coluna;
• FOREIGN KEY: chave estrangeira que define os valores das colunas que devem
existir na chave primária da tabela referenciada;
• PRIMARY KEY: chave primária que identifica uma linha como única em uma
tabela;
• UNIQUE: previne duplicidades de linhas em uma tabela;
SQL Server - Módulo I 7
Primary Key Constraints
• Identifica unicamente uma linha na tabela;
• Apenas uma por tabela;
• Pode ser composta por múltiplas colunas;
• Não aceita valores nulos;
SQL Server - Módulo I 8
ALTER TABLE [Person].[BusinessEntity]
ADD CONSTRAINT [PK_BusinessEntity_BusinessEntityID]
PRIMARY KEY CLUSTERED ([BusinessEntityID] ASC);
Foreign Key Constraints
• Link entre tabelas;
• Principal componente da integridade referencial;
• Precisa referenciar uma chave primária ou Unique;
• Pode aceitar valores nulos;
SQL Server - Módulo I 9
ALTER TABLE [Person].[Person] WITH CHECK ADD CONSTRAINT [FK_Person_BusinessEntity_BusinessEntityID]
FOREIGN KEY([BusinessEntityID])
REFERENCES [Person].[BusinessEntity] ([BusinessEntityID]);
ALTER TABLE [Person].[Person] CHECK CONSTRAINT [FK_Person_BusinessEntity_BusinessEntityID];
DEFAULT Constraints
• DEFAULT: valor padrão quando omitido;
• Apenas um DEFAULT por coluna;
• Aceita a chamada de algumas System Functions;
SQL Server - Módulo I 10
ALTER TABLE [Person].[BusinessEntity] ADD CONSTRAINT [DF_BusinessEntity_ModifiedDate]
DEFAULT (getdate()) FOR [ModifiedDate]
CHECK Constraints
• CHECK: controla valores aceitos pela coluna;
• São permitidas múltiplas condições check por coluna;
• É possível referenciar outras colunas da mesma tabela;
SQL Server - Módulo I 11
ALTER TABLE [Person].[Person] WITH CHECK ADD CONSTRAINT [CK_Person_PersonType] CHECK
(([PersonType] IS NULL OR (upper([PersonType])='GC' OR upper([PersonType])='SP' OR
upper([PersonType])='EM' OR upper([PersonType])='IN' OR upper([PersonType])='VC' OR
upper([PersonType])='SC')))
ALTER TABLE [Person].[Person] CHECK CONSTRAINT [CK_Person_PersonType]
GO
UNIQUE Constraints
• Assegura que o valor da coluna é único na tabela;
• Somente um valor NULL é aceito por coluna;
• É possível combinar múltiplas colunas em uma constraint UNIQUE;
SQL Server - Módulo I 12
ALTER TABLE [HumanResources].[EmployeeOrg] ADD UNIQUE NONCLUSTERED
(
[EmployeeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY =
OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
Integridade referencial em cascata
• NO ACTION (padrão): retorna um erro e realiza o rollback da
transação;
• CASCADE: atualiza ou deleta os valores das foreign keys em todas as
tabelas referenciadas pela primary key em questão;
• SET NULL: define o valor NULL para as foreign keys em todas as
tabelas referenciadas pela primary key em questão;
• SET DEFAULT: define o valor DEFAULT para as foreign keys em todas
as tabelas referenciadas pela primary key em questão;
SQL Server - Módulo I 13
Exemplo de integridade referencial
em cascata
SQL Server - Módulo I 14
CREATE TABLE dbo.Produto
( IdProduto INT PRIMARY KEY,
Nome VARCHAR(50) NOT NULL,
Descricao VARCHAR(25)
);
CREATE TABLE dbo.Estoque
( IdEstoque INT PRIMARY KEY,
IdProduto INT NOT NULL,
Quantidade INT,
ValorMinimo INT,
CONSTRAINT FK_Estoque_Produto
FOREIGN KEY (IdProduto)
REFERENCES dbo.Produto (IdProduto)
ON DELETE CASCADE
ON UPDATE CASCADE
);
Observações sobre constraints
• Utilize nomes bem descritivos para as constraints;
• Crie, altere ou delete constraints sem ter que deletar a tabela;
• Opte sempre por fazer verificação de erros na aplicação e em
transações;
• Pode-se desabilitar foreign keys para melhorar o desempenho de
INSERTs em lotes grandes;
• Também, é possível desabilitar uma FK em sua criação para evitar a
checagem de dados existentes na tabela;
SQL Server - Módulo I 15
Hands-on constraints
SQL Server - Módulo I 16
ALTER TABLE Person.EmailAddress
ADD CONSTRAINT UQ_Person_EmailAddress_PostalCode
UNIQUE NONCLUSTERED ([EmailAddress] ASC);
GO
ALTER TABLE Person.EmailAddress WITH CHECK
ADD CONSTRAINT CK_Person_EmailAddress_PostalCode_Len
CHECK (LEN([EmailAddress]) > 10);
GO
ALTER TABLE Person.EmailAddress DROP CONSTRAINT UQ_Person_EmailAddress_PostalCode;
GO
ALTER TABLE Person.EmailAddress DROP CONSTRAINT CK_Person_EmailAddress_PostalCode_Len;
GO
Aula 3: Triggers
• Visão geral sobre triggers;
• Trigger para INSERT;
• Trigger para DELETE;
• Trigger para UPDATE;
• Trigger INSTEAD OF;
• Triggers aninhadas;
• Triggers recursivas;
SQL Server - Módulo I 17
Visão geral sobre triggers
• Tipo especial de stored procedure executada automaticamente ao realizar
um INSERT, UPDATE ou DELETE;
• Parte da transação do comando executado;
• AFTER: as triggers do tipo AFTER são executadas após a modificação dos
dados pelo comando de INSERT, UPDATE ou DELETE;
• INSTED OF: as triggers do tipo INSTEAD OF são executadas antes da
modificação dos dados pelo comando de INSERT, UPDATE ou DELETE;
SQL Server - Módulo I 18
Triggers AFTER INSERT
• O comando de INSERT é executado;
• Os dados do INSERT são armazenados no log de transações;
• Por fim, a trigger AFTER INSERT é acionada;
• Permite acesso à tabela INSERTED;
SQL Server - Módulo I 19
CREATE TRIGGER [Person].[iuPerson] ON [Person].[Person]
AFTER INSERT NOT FOR REPLICATION AS
BEGIN
UPDATE [Person].[Person]
SET [Person].[Person].[Demographics] = N'<IndividualSurvey
xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey">
<TotalPurchaseYTD>0.00</TotalPurchaseYTD>
</IndividualSurvey>'
FROM inserted
WHERE [Person].[Person].[BusinessEntityID] = inserted.[BusinessEntityID]
AND inserted.[Demographics] IS NULL;
…
Triggers AFTER DELETE
• O comando de DELETE é executado;
• Os dados do DELETE são armazenados no log de transações;
• Por fim, a trigger AFTER DELETE é acionada;
• Permite acesso à tabela DELETED;
SQL Server - Módulo I 20
CREATE TRIGGER [Sales].[iduSalesOrderDetail] ON [Sales].[SalesOrderDetail]
AFTER DELETE AS
BEGIN
DECLARE @Count int;
SET @Count = @@ROWCOUNT;
IF @Count = 0
RETURN;
...
END;
Triggers AFTER UPDATE
• O comando de UPDATE é executado;
• Os dados do UPDATE são armazenados no log de transações;
• Por fim, a trigger AFTER UPDATE é acionada;
• Permite acesso às tabelas INSERTED e DELETED;
SQL Server - Módulo I 21
CREATE TRIGGER [Purchasing].[uPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail]
AFTER UPDATE AS
BEGIN
INSERT INTO [Production].[TransactionHistory]
([ProductID], [ReferenceOrderID], [ReferenceOrderLineID], [TransactionType], [TransactionDate]
,[Quantity] ,[ActualCost])
SELECT inserted.[ProductID], inserted.[PurchaseOrderID], inserted.[PurchaseOrderDetailID],'P'
,GETDATE(),inserted.[OrderQty],inserted.[UnitPrice] FROM inserted
INNER JOIN [Purchasing].[PurchaseOrderDetail]
ON inserted.[PurchaseOrderID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID];
…
Triggers INSTEAD OF
• O comando de INSERT, DELETE ou UPDATE é executado;
• Porém, o comando não modifica dados da tabela;
• No lugar do comando, a trigger INSTEAD OF é acionada;
SQL Server - Módulo I 22
CREATE TRIGGER [HumanResources].[dEmployee] ON [HumanResources].[Employee]
INSTEAD OF DELETE NOT FOR REPLICATION AS
BEGIN
BEGIN
RAISERROR
(N'Employees cannot be deleted. They can only be marked as not current.', -- Message
10, -- Severity.
1); -- State.
-- Rollback any active or uncommittable transactions
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
...
Triggers aninhadas
• Triggers aninhadas ocorrem quando uma trigger dispara outra trigger;
• Esse comportamento acontece porque é possível usar um INSERT, UPDATE
ou DELETE dentro de uma trigger que afete outra tabela e,
consequentemente, pode disparar outra trigger;
• A configuração de triggers aninhadas pode ser desabilitada no banco;
• Uma trigger aninhada não irá disparar duas vezes a mesma transação da
trigger;
• Se um rollback for chamado, todas as operações aninhadas serão
desfeitas;
SQL Server - Módulo I 23
Triggers recursivas
• Triggers recursivas são desabilitadas por padrão;
• Podem exceder 32 níveis de recursividade se não forem
implementadas corretamente;
• A ordem das atualizações pode ficar complexa com triggers
recursivas;
• Sempre que possível, substitua a lógica recursiva por uma lógica não
recursiva;
SQL Server - Módulo I 24
ALTER DATABASE AdventureWorks2017 SET RECURSIVE_TRIGGERS ON;
Hands-on triggers
SQL Server - Módulo I 25
CREATE TRIGGER dPerson ON [Person].[Person]
INSTEAD OF DELETE NOT FOR REPLICATION AS
BEGIN
DECLARE @Count int;
SET @Count = @@ROWCOUNT;
IF @Count = 0
RETURN;
SET NOCOUNT ON;
BEGIN
RAISERROR
(N'Não é permitido deletar uma pessoa.', -- Message
10, -- Severity.
1); -- State.
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END;
END;
Lab: integridade de dados
• Exercício 1: criando constraints;
• Exercício 2: desabilitando constraints;
• Exercício 3: triggers;
SQL Server - Módulo I 26

Mais conteúdo relacionado

Semelhante a Modulo-02-Aula-04-certificao-sqlser.pptx

Treinamento Oracle Forms
Treinamento Oracle FormsTreinamento Oracle Forms
Treinamento Oracle FormsFelipe Goulart
 
Curso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal RootCurso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal RootMarcos Quinho
 
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhoresRodrigo Crespi
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darinTicianne Darin
 
Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1fabriciodenis
 
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLT@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLTargettrust
 
Aula09 - PL SQL - Subprogramas.pptx
Aula09 - PL SQL - Subprogramas.pptxAula09 - PL SQL - Subprogramas.pptx
Aula09 - PL SQL - Subprogramas.pptxGabrielDantas578827
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQLArley Rodrigues
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sqlNilson Augustini
 
Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018Elaine Cecília Gatto
 
Modulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxModulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxAugustoNicolau2
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureFernando Roberto Proença
 

Semelhante a Modulo-02-Aula-04-certificao-sqlser.pptx (20)

Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Triggers no SQL Server
Triggers no SQL ServerTriggers no SQL Server
Triggers no SQL Server
 
Treinamento Oracle Forms
Treinamento Oracle FormsTreinamento Oracle Forms
Treinamento Oracle Forms
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Curso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal RootCurso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal Root
 
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darin
 
Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1
 
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQLT@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
T@rget Trust - Formação: Administrador e Desenvolvedor PostgreSQL
 
Aula09 - PL SQL - Subprogramas.pptx
Aula09 - PL SQL - Subprogramas.pptxAula09 - PL SQL - Subprogramas.pptx
Aula09 - PL SQL - Subprogramas.pptx
 
Triggers
TriggersTriggers
Triggers
 
Basesdedados
BasesdedadosBasesdedados
Basesdedados
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQL
 
Python 04
Python 04Python 04
Python 04
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 
Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
Modulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxModulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptx
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored Procedure
 

Último

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxLusGlissonGud
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 

Último (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 

Modulo-02-Aula-04-certificao-sqlser.pptx

  • 1. SQL Server | Módulo II Obrigado pela presença!
  • 2. Seção 4: Integridade de Dados • Aula 1: Integridade de dados; • Aula 2: Constraints; • Aula 3: Triggers; • Lab: Integridade de dados com constraints e triggers; SQL Server - Módulo I 2
  • 3. Aula 1: Integridade de dados • Tipos de integridade de dados; • Opções para garantir a integridade de dados; SQL Server - Módulo I 3
  • 4. Tipos de integridade de dados • Integridade de domínio: define o tipo de informação válida para uma coluna. Exemplo: tipo de dados, valores nulos, intervalos aceitos etc; • Integridade de entidade: define o identificador único de uma tabela. Exemplo: chave primária e índice único; • Integridade referencial: define o relacionamento (link) entre tabelas ou entre uma tabela e ela mesma. Exemplo: chave estrangeira; SQL Server - Módulo I 4
  • 5. Opções para integridade de dados • Tipos de dados: definem o tipo de informação aceita em uma coluna; • Rule: regras para determinar valores aceitos por uma coluna; • Default: valor padrão de uma coluna quando seu valor for omitido; • Constraints: mecanismo da Engine para integridade de dados; • Triggers: tipo especial de procedure executada automaticamente ao realizar modificações em uma tabela ou view; SQL Server - Módulo I 5
  • 6. Aula 2: Constraints • Constraints; • Key Constraints; • Outras constraints; • Integridade referencial em cascata; • Observações sobre checagem de constraints; SQL Server - Módulo I 6
  • 7. Constraints • DEFAULT: valor padrão de uma coluna, quando o mesmo for omitido; • CHECK: verifica os valores aceitos pela coluna; • FOREIGN KEY: chave estrangeira que define os valores das colunas que devem existir na chave primária da tabela referenciada; • PRIMARY KEY: chave primária que identifica uma linha como única em uma tabela; • UNIQUE: previne duplicidades de linhas em uma tabela; SQL Server - Módulo I 7
  • 8. Primary Key Constraints • Identifica unicamente uma linha na tabela; • Apenas uma por tabela; • Pode ser composta por múltiplas colunas; • Não aceita valores nulos; SQL Server - Módulo I 8 ALTER TABLE [Person].[BusinessEntity] ADD CONSTRAINT [PK_BusinessEntity_BusinessEntityID] PRIMARY KEY CLUSTERED ([BusinessEntityID] ASC);
  • 9. Foreign Key Constraints • Link entre tabelas; • Principal componente da integridade referencial; • Precisa referenciar uma chave primária ou Unique; • Pode aceitar valores nulos; SQL Server - Módulo I 9 ALTER TABLE [Person].[Person] WITH CHECK ADD CONSTRAINT [FK_Person_BusinessEntity_BusinessEntityID] FOREIGN KEY([BusinessEntityID]) REFERENCES [Person].[BusinessEntity] ([BusinessEntityID]); ALTER TABLE [Person].[Person] CHECK CONSTRAINT [FK_Person_BusinessEntity_BusinessEntityID];
  • 10. DEFAULT Constraints • DEFAULT: valor padrão quando omitido; • Apenas um DEFAULT por coluna; • Aceita a chamada de algumas System Functions; SQL Server - Módulo I 10 ALTER TABLE [Person].[BusinessEntity] ADD CONSTRAINT [DF_BusinessEntity_ModifiedDate] DEFAULT (getdate()) FOR [ModifiedDate]
  • 11. CHECK Constraints • CHECK: controla valores aceitos pela coluna; • São permitidas múltiplas condições check por coluna; • É possível referenciar outras colunas da mesma tabela; SQL Server - Módulo I 11 ALTER TABLE [Person].[Person] WITH CHECK ADD CONSTRAINT [CK_Person_PersonType] CHECK (([PersonType] IS NULL OR (upper([PersonType])='GC' OR upper([PersonType])='SP' OR upper([PersonType])='EM' OR upper([PersonType])='IN' OR upper([PersonType])='VC' OR upper([PersonType])='SC'))) ALTER TABLE [Person].[Person] CHECK CONSTRAINT [CK_Person_PersonType] GO
  • 12. UNIQUE Constraints • Assegura que o valor da coluna é único na tabela; • Somente um valor NULL é aceito por coluna; • É possível combinar múltiplas colunas em uma constraint UNIQUE; SQL Server - Módulo I 12 ALTER TABLE [HumanResources].[EmployeeOrg] ADD UNIQUE NONCLUSTERED ( [EmployeeID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] GO
  • 13. Integridade referencial em cascata • NO ACTION (padrão): retorna um erro e realiza o rollback da transação; • CASCADE: atualiza ou deleta os valores das foreign keys em todas as tabelas referenciadas pela primary key em questão; • SET NULL: define o valor NULL para as foreign keys em todas as tabelas referenciadas pela primary key em questão; • SET DEFAULT: define o valor DEFAULT para as foreign keys em todas as tabelas referenciadas pela primary key em questão; SQL Server - Módulo I 13
  • 14. Exemplo de integridade referencial em cascata SQL Server - Módulo I 14 CREATE TABLE dbo.Produto ( IdProduto INT PRIMARY KEY, Nome VARCHAR(50) NOT NULL, Descricao VARCHAR(25) ); CREATE TABLE dbo.Estoque ( IdEstoque INT PRIMARY KEY, IdProduto INT NOT NULL, Quantidade INT, ValorMinimo INT, CONSTRAINT FK_Estoque_Produto FOREIGN KEY (IdProduto) REFERENCES dbo.Produto (IdProduto) ON DELETE CASCADE ON UPDATE CASCADE );
  • 15. Observações sobre constraints • Utilize nomes bem descritivos para as constraints; • Crie, altere ou delete constraints sem ter que deletar a tabela; • Opte sempre por fazer verificação de erros na aplicação e em transações; • Pode-se desabilitar foreign keys para melhorar o desempenho de INSERTs em lotes grandes; • Também, é possível desabilitar uma FK em sua criação para evitar a checagem de dados existentes na tabela; SQL Server - Módulo I 15
  • 16. Hands-on constraints SQL Server - Módulo I 16 ALTER TABLE Person.EmailAddress ADD CONSTRAINT UQ_Person_EmailAddress_PostalCode UNIQUE NONCLUSTERED ([EmailAddress] ASC); GO ALTER TABLE Person.EmailAddress WITH CHECK ADD CONSTRAINT CK_Person_EmailAddress_PostalCode_Len CHECK (LEN([EmailAddress]) > 10); GO ALTER TABLE Person.EmailAddress DROP CONSTRAINT UQ_Person_EmailAddress_PostalCode; GO ALTER TABLE Person.EmailAddress DROP CONSTRAINT CK_Person_EmailAddress_PostalCode_Len; GO
  • 17. Aula 3: Triggers • Visão geral sobre triggers; • Trigger para INSERT; • Trigger para DELETE; • Trigger para UPDATE; • Trigger INSTEAD OF; • Triggers aninhadas; • Triggers recursivas; SQL Server - Módulo I 17
  • 18. Visão geral sobre triggers • Tipo especial de stored procedure executada automaticamente ao realizar um INSERT, UPDATE ou DELETE; • Parte da transação do comando executado; • AFTER: as triggers do tipo AFTER são executadas após a modificação dos dados pelo comando de INSERT, UPDATE ou DELETE; • INSTED OF: as triggers do tipo INSTEAD OF são executadas antes da modificação dos dados pelo comando de INSERT, UPDATE ou DELETE; SQL Server - Módulo I 18
  • 19. Triggers AFTER INSERT • O comando de INSERT é executado; • Os dados do INSERT são armazenados no log de transações; • Por fim, a trigger AFTER INSERT é acionada; • Permite acesso à tabela INSERTED; SQL Server - Módulo I 19 CREATE TRIGGER [Person].[iuPerson] ON [Person].[Person] AFTER INSERT NOT FOR REPLICATION AS BEGIN UPDATE [Person].[Person] SET [Person].[Person].[Demographics] = N'<IndividualSurvey xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey"> <TotalPurchaseYTD>0.00</TotalPurchaseYTD> </IndividualSurvey>' FROM inserted WHERE [Person].[Person].[BusinessEntityID] = inserted.[BusinessEntityID] AND inserted.[Demographics] IS NULL; …
  • 20. Triggers AFTER DELETE • O comando de DELETE é executado; • Os dados do DELETE são armazenados no log de transações; • Por fim, a trigger AFTER DELETE é acionada; • Permite acesso à tabela DELETED; SQL Server - Módulo I 20 CREATE TRIGGER [Sales].[iduSalesOrderDetail] ON [Sales].[SalesOrderDetail] AFTER DELETE AS BEGIN DECLARE @Count int; SET @Count = @@ROWCOUNT; IF @Count = 0 RETURN; ... END;
  • 21. Triggers AFTER UPDATE • O comando de UPDATE é executado; • Os dados do UPDATE são armazenados no log de transações; • Por fim, a trigger AFTER UPDATE é acionada; • Permite acesso às tabelas INSERTED e DELETED; SQL Server - Módulo I 21 CREATE TRIGGER [Purchasing].[uPurchaseOrderDetail] ON [Purchasing].[PurchaseOrderDetail] AFTER UPDATE AS BEGIN INSERT INTO [Production].[TransactionHistory] ([ProductID], [ReferenceOrderID], [ReferenceOrderLineID], [TransactionType], [TransactionDate] ,[Quantity] ,[ActualCost]) SELECT inserted.[ProductID], inserted.[PurchaseOrderID], inserted.[PurchaseOrderDetailID],'P' ,GETDATE(),inserted.[OrderQty],inserted.[UnitPrice] FROM inserted INNER JOIN [Purchasing].[PurchaseOrderDetail] ON inserted.[PurchaseOrderID] = [Purchasing].[PurchaseOrderDetail].[PurchaseOrderID]; …
  • 22. Triggers INSTEAD OF • O comando de INSERT, DELETE ou UPDATE é executado; • Porém, o comando não modifica dados da tabela; • No lugar do comando, a trigger INSTEAD OF é acionada; SQL Server - Módulo I 22 CREATE TRIGGER [HumanResources].[dEmployee] ON [HumanResources].[Employee] INSTEAD OF DELETE NOT FOR REPLICATION AS BEGIN BEGIN RAISERROR (N'Employees cannot be deleted. They can only be marked as not current.', -- Message 10, -- Severity. 1); -- State. -- Rollback any active or uncommittable transactions IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION; ...
  • 23. Triggers aninhadas • Triggers aninhadas ocorrem quando uma trigger dispara outra trigger; • Esse comportamento acontece porque é possível usar um INSERT, UPDATE ou DELETE dentro de uma trigger que afete outra tabela e, consequentemente, pode disparar outra trigger; • A configuração de triggers aninhadas pode ser desabilitada no banco; • Uma trigger aninhada não irá disparar duas vezes a mesma transação da trigger; • Se um rollback for chamado, todas as operações aninhadas serão desfeitas; SQL Server - Módulo I 23
  • 24. Triggers recursivas • Triggers recursivas são desabilitadas por padrão; • Podem exceder 32 níveis de recursividade se não forem implementadas corretamente; • A ordem das atualizações pode ficar complexa com triggers recursivas; • Sempre que possível, substitua a lógica recursiva por uma lógica não recursiva; SQL Server - Módulo I 24 ALTER DATABASE AdventureWorks2017 SET RECURSIVE_TRIGGERS ON;
  • 25. Hands-on triggers SQL Server - Módulo I 25 CREATE TRIGGER dPerson ON [Person].[Person] INSTEAD OF DELETE NOT FOR REPLICATION AS BEGIN DECLARE @Count int; SET @Count = @@ROWCOUNT; IF @Count = 0 RETURN; SET NOCOUNT ON; BEGIN RAISERROR (N'Não é permitido deletar uma pessoa.', -- Message 10, -- Severity. 1); -- State. IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION; END END; END;
  • 26. Lab: integridade de dados • Exercício 1: criando constraints; • Exercício 2: desabilitando constraints; • Exercício 3: triggers; SQL Server - Módulo I 26