Foram encontradas 60 questões.
- Arquitetura e Design de SoftwareMVC: Model-View-Controller
- FrameworksFrameworks JavaStruts
- LinguagensJavaJSP: JavaServer Pages
“bean”,”html” e “logic” são algumas das Taglib do struts.
Provas
- Arquitetura e Design de SoftwareArquitetura Cliente-Servidor
- FrameworksConceitos e Fundamentos de Frameworks
- Interoperabilidade e IntegraçãoIntegração de Sistemas e MiddlewareRPC: Remote Procedure Call
- LinguagensJava
No framework GWT, a comunicação entre o lado cliente e o servidor pode ser feita por RPC (Remote Procedure Call), comunicação que acontece de forma assíncrona.
Provas
CREATE TABLE Conta (
Id int IDENTITY (1, 1) NOT NULL ,
Agencia char (2) NOT NULL ,
Conta char (3) NOT NULL ,
Nome char (20) NOT NULL ,
Saldo money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE Conta WITH NOCHECK ADD CONSTRAINT PK_Conta PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Conta] ADD CONSTRAINT IX_Conta UNIQUE NONCLUSTERED (Agencia,Conta) ON [PRIMARY]
GO
CREATE TABLE ContaEspecial (
Id int NOT NULL ,
Limite money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE ContaEspecial WITH NOCHECK ADD
CONSTRAINT PK_ContaEspecial PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
CREATE TABLE Movimento (
Id int IDENTITY (1, 1) NOT NULL ,
IdConta int NOT NULL ,
Tipo char (1) NOT NULL ,
Data datetime NOT NULL ,
valor money NOT NULL ,
) ON [PRIMARY]
GO
CREATE TRIGGER Movimento_Insert On Movimento For Insert As
Begin
Declare @qt_rows int,
@Msg char(255),
@Saldo money,
@Limite money,
@Tipo char(1),
@Valor money
Select @Saldo = 0
Select @Limite = 0
Select @qt_rows = @@rowcount
If @qt_rows = 0
Return
Select @Tipo = Tipo from inserted
Select @Valor = Valor from inserted
If Not Exists (Select 1 from Conta C, inserted I where C.Id = I.IdConta)
Begin
Select @Msg = ‘AAAAA’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Else
Select @Saldo = Saldo from Conta C, inserted I where C.Id = I.IdConta
If Exists (Select 1 from ContaEspecial E, inserted I where E.Id = I.IdConta)
Select @Limite = Limite from ContaEspecial E, inserted I where E.Id = I.IdConta
If (@Tipo = ‘D’)
Begin
If ((@Saldo + @Limite) < @Valor)
Begin
Select @Msg = ‘BBBBB’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Select @Saldo = @Saldo - @Valor
End
Else
Select @Saldo = @Saldo + @Valor
Update Conta Set Saldo = @Saldo From inserted I where Conta.Id = I.IdConta
End
GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’001',’Carlos Almeida’,23.78) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’007',’Ana Seixas’,657.90) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’008',’Rita Pinto’,6.00) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’011',’Roger Santos’,144.97) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’014',’Gil Santos’,77.11) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’001',’Mina Rocha’,1234.22) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’003',’Carla Brito’,7887.43) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’004',’Rosa Silva’,0.12) GO
Insert Into ContaEspecial Select Id,100.00 From Conta Where Agencia = ‘01’ And Conta = ‘007’ GO
Insert Into ContaEspecial Select Id,200.00 From Conta Where Agencia = ‘01’ And Conta = ‘011’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘002’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘003’ GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (1, ‘C’,’2011-01-03 10:03:03',24.12) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (10,’C’,’2011-01-05 17:11:34',300.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (3, ‘D’,’2011-01-05 18:40:11',15.66) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (7, ‘D’,’2011-01-10 08:22:01',1200.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-12 19:18:49',320.10) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-16 07:11:20',45.89) GO
Com base na análise dos dados, pode-se afirmar:
A execução do seguinte comando SQL:
SELECT IDENT_SEED(TABLE_NAME) AS IDENT_SEED
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = ‘Conta’
exibirá o seguinte resultado:
IDENT_SEED
————————————————————
1
(1 row(s) affected)
Provas
CREATE TABLE Conta (
Id int IDENTITY (1, 1) NOT NULL ,
Agencia char (2) NOT NULL ,
Conta char (3) NOT NULL ,
Nome char (20) NOT NULL ,
Saldo money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE Conta WITH NOCHECK ADD CONSTRAINT PK_Conta PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Conta] ADD CONSTRAINT IX_Conta UNIQUE NONCLUSTERED (Agencia,Conta) ON [PRIMARY]
GO
CREATE TABLE ContaEspecial (
Id int NOT NULL ,
Limite money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE ContaEspecial WITH NOCHECK ADD
CONSTRAINT PK_ContaEspecial PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
CREATE TABLE Movimento (
Id int IDENTITY (1, 1) NOT NULL ,
IdConta int NOT NULL ,
Tipo char (1) NOT NULL ,
Data datetime NOT NULL ,
valor money NOT NULL ,
) ON [PRIMARY]
GO
CREATE TRIGGER Movimento_Insert On Movimento For Insert As
Begin
Declare @qt_rows int,
@Msg char(255),
@Saldo money,
@Limite money,
@Tipo char(1),
@Valor money
Select @Saldo = 0
Select @Limite = 0
Select @qt_rows = @@rowcount
If @qt_rows = 0
Return
Select @Tipo = Tipo from inserted
Select @Valor = Valor from inserted
If Not Exists (Select 1 from Conta C, inserted I where C.Id = I.IdConta)
Begin
Select @Msg = ‘AAAAA’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Else
Select @Saldo = Saldo from Conta C, inserted I where C.Id = I.IdConta
If Exists (Select 1 from ContaEspecial E, inserted I where E.Id = I.IdConta)
Select @Limite = Limite from ContaEspecial E, inserted I where E.Id = I.IdConta
If (@Tipo = ‘D’)
Begin
If ((@Saldo + @Limite) < @Valor)
Begin
Select @Msg = ‘BBBBB’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Select @Saldo = @Saldo - @Valor
End
Else
Select @Saldo = @Saldo + @Valor
Update Conta Set Saldo = @Saldo From inserted I where Conta.Id = I.IdConta
End
GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’001',’Carlos Almeida’,23.78) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’007',’Ana Seixas’,657.90) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’008',’Rita Pinto’,6.00) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’011',’Roger Santos’,144.97) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’014',’Gil Santos’,77.11) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’001',’Mina Rocha’,1234.22) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’003',’Carla Brito’,7887.43) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’004',’Rosa Silva’,0.12) GO
Insert Into ContaEspecial Select Id,100.00 From Conta Where Agencia = ‘01’ And Conta = ‘007’ GO
Insert Into ContaEspecial Select Id,200.00 From Conta Where Agencia = ‘01’ And Conta = ‘011’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘002’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘003’ GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (1, ‘C’,’2011-01-03 10:03:03',24.12) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (10,’C’,’2011-01-05 17:11:34',300.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (3, ‘D’,’2011-01-05 18:40:11',15.66) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (7, ‘D’,’2011-01-10 08:22:01',1200.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-12 19:18:49',320.10) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-16 07:11:20',45.89) GO
Com base na análise dos dados, pode-se afirmar:
Ao executar o script, o comando Select @Msg = ‘BBBBB’ será executado apenas uma vez.
Provas
CREATE TABLE Conta (
Id int IDENTITY (1, 1) NOT NULL ,
Agencia char (2) NOT NULL ,
Conta char (3) NOT NULL ,
Nome char (20) NOT NULL ,
Saldo money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE Conta WITH NOCHECK ADD CONSTRAINT PK_Conta PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Conta] ADD CONSTRAINT IX_Conta UNIQUE NONCLUSTERED (Agencia,Conta) ON [PRIMARY]
GO
CREATE TABLE ContaEspecial (
Id int NOT NULL ,
Limite money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE ContaEspecial WITH NOCHECK ADD
CONSTRAINT PK_ContaEspecial PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
CREATE TABLE Movimento (
Id int IDENTITY (1, 1) NOT NULL ,
IdConta int NOT NULL ,
Tipo char (1) NOT NULL ,
Data datetime NOT NULL ,
valor money NOT NULL ,
) ON [PRIMARY]
GO
CREATE TRIGGER Movimento_Insert On Movimento For Insert As
Begin
Declare @qt_rows int,
@Msg char(255),
@Saldo money,
@Limite money,
@Tipo char(1),
@Valor money
Select @Saldo = 0
Select @Limite = 0
Select @qt_rows = @@rowcount
If @qt_rows = 0
Return
Select @Tipo = Tipo from inserted
Select @Valor = Valor from inserted
If Not Exists (Select 1 from Conta C, inserted I where C.Id = I.IdConta)
Begin
Select @Msg = ‘AAAAA’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Else
Select @Saldo = Saldo from Conta C, inserted I where C.Id = I.IdConta
If Exists (Select 1 from ContaEspecial E, inserted I where E.Id = I.IdConta)
Select @Limite = Limite from ContaEspecial E, inserted I where E.Id = I.IdConta
If (@Tipo = ‘D’)
Begin
If ((@Saldo + @Limite) < @Valor)
Begin
Select @Msg = ‘BBBBB’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Select @Saldo = @Saldo - @Valor
End
Else
Select @Saldo = @Saldo + @Valor
Update Conta Set Saldo = @Saldo From inserted I where Conta.Id = I.IdConta
End
GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’001',’Carlos Almeida’,23.78) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’007',’Ana Seixas’,657.90) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’008',’Rita Pinto’,6.00) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’011',’Roger Santos’,144.97) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’014',’Gil Santos’,77.11) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’001',’Mina Rocha’,1234.22) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’003',’Carla Brito’,7887.43) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’004',’Rosa Silva’,0.12) GO
Insert Into ContaEspecial Select Id,100.00 From Conta Where Agencia = ‘01’ And Conta = ‘007’ GO
Insert Into ContaEspecial Select Id,200.00 From Conta Where Agencia = ‘01’ And Conta = ‘011’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘002’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘003’ GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (1, ‘C’,’2011-01-03 10:03:03',24.12) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (10,’C’,’2011-01-05 17:11:34',300.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (3, ‘D’,’2011-01-05 18:40:11',15.66) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (7, ‘D’,’2011-01-10 08:22:01',1200.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-12 19:18:49',320.10) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-16 07:11:20',45.89) GO
Com base na análise dos dados, pode-se afirmar:
A criação da CONSTRAINT IX_Conta garante que não existirá duplicidade do par de atributos: (Agência, Conta) na tabela de Conta, ou seja, não existirá duas ou mais linhas na tabela de Conta, com valores iguais de agência e número da conta.
Provas
CREATE TABLE Conta (
Id int IDENTITY (1, 1) NOT NULL ,
Agencia char (2) NOT NULL ,
Conta char (3) NOT NULL ,
Nome char (20) NOT NULL ,
Saldo money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE Conta WITH NOCHECK ADD CONSTRAINT PK_Conta PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Conta] ADD CONSTRAINT IX_Conta UNIQUE NONCLUSTERED (Agencia,Conta) ON [PRIMARY]
GO
CREATE TABLE ContaEspecial (
Id int NOT NULL ,
Limite money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE ContaEspecial WITH NOCHECK ADD
CONSTRAINT PK_ContaEspecial PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
CREATE TABLE Movimento (
Id int IDENTITY (1, 1) NOT NULL ,
IdConta int NOT NULL ,
Tipo char (1) NOT NULL ,
Data datetime NOT NULL ,
valor money NOT NULL ,
) ON [PRIMARY]
GO
CREATE TRIGGER Movimento_Insert On Movimento For Insert As
Begin
Declare @qt_rows int,
@Msg char(255),
@Saldo money,
@Limite money,
@Tipo char(1),
@Valor money
Select @Saldo = 0
Select @Limite = 0
Select @qt_rows = @@rowcount
If @qt_rows = 0
Return
Select @Tipo = Tipo from inserted
Select @Valor = Valor from inserted
If Not Exists (Select 1 from Conta C, inserted I where C.Id = I.IdConta)
Begin
Select @Msg = ‘AAAAA’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Else
Select @Saldo = Saldo from Conta C, inserted I where C.Id = I.IdConta
If Exists (Select 1 from ContaEspecial E, inserted I where E.Id = I.IdConta)
Select @Limite = Limite from ContaEspecial E, inserted I where E.Id = I.IdConta
If (@Tipo = ‘D’)
Begin
If ((@Saldo + @Limite) < @Valor)
Begin
Select @Msg = ‘BBBBB’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Select @Saldo = @Saldo - @Valor
End
Else
Select @Saldo = @Saldo + @Valor
Update Conta Set Saldo = @Saldo From inserted I where Conta.Id = I.IdConta
End
GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’001',’Carlos Almeida’,23.78) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’007',’Ana Seixas’,657.90) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’008',’Rita Pinto’,6.00) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’011',’Roger Santos’,144.97) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’014',’Gil Santos’,77.11) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’001',’Mina Rocha’,1234.22) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’003',’Carla Brito’,7887.43) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’004',’Rosa Silva’,0.12) GO
Insert Into ContaEspecial Select Id,100.00 From Conta Where Agencia = ‘01’ And Conta = ‘007’ GO
Insert Into ContaEspecial Select Id,200.00 From Conta Where Agencia = ‘01’ And Conta = ‘011’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘002’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘003’ GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (1, ‘C’,’2011-01-03 10:03:03',24.12) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (10,’C’,’2011-01-05 17:11:34',300.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (3, ‘D’,’2011-01-05 18:40:11',15.66) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (7, ‘D’,’2011-01-10 08:22:01',1200.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-12 19:18:49',320.10) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-16 07:11:20',45.89) GO
Com base na análise dos dados, pode-se afirmar:
Após a execução do script, com referência aos comandos “insert” na tabela de Movimento, apenas um deles vai provocar erro.
Provas
CREATE TABLE Conta (
Id int IDENTITY (1, 1) NOT NULL ,
Agencia char (2) NOT NULL ,
Conta char (3) NOT NULL ,
Nome char (20) NOT NULL ,
Saldo money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE Conta WITH NOCHECK ADD CONSTRAINT PK_Conta PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Conta] ADD CONSTRAINT IX_Conta UNIQUE NONCLUSTERED (Agencia,Conta) ON [PRIMARY]
GO
CREATE TABLE ContaEspecial (
Id int NOT NULL ,
Limite money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE ContaEspecial WITH NOCHECK ADD
CONSTRAINT PK_ContaEspecial PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
CREATE TABLE Movimento (
Id int IDENTITY (1, 1) NOT NULL ,
IdConta int NOT NULL ,
Tipo char (1) NOT NULL ,
Data datetime NOT NULL ,
valor money NOT NULL ,
) ON [PRIMARY]
GO
CREATE TRIGGER Movimento_Insert On Movimento For Insert As
Begin
Declare @qt_rows int,
@Msg char(255),
@Saldo money,
@Limite money,
@Tipo char(1),
@Valor money
Select @Saldo = 0
Select @Limite = 0
Select @qt_rows = @@rowcount
If @qt_rows = 0
Return
Select @Tipo = Tipo from inserted
Select @Valor = Valor from inserted
If Not Exists (Select 1 from Conta C, inserted I where C.Id = I.IdConta)
Begin
Select @Msg = ‘AAAAA’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Else
Select @Saldo = Saldo from Conta C, inserted I where C.Id = I.IdConta
If Exists (Select 1 from ContaEspecial E, inserted I where E.Id = I.IdConta)
Select @Limite = Limite from ContaEspecial E, inserted I where E.Id = I.IdConta
If (@Tipo = ‘D’)
Begin
If ((@Saldo + @Limite) < @Valor)
Begin
Select @Msg = ‘BBBBB’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Select @Saldo = @Saldo - @Valor
End
Else
Select @Saldo = @Saldo + @Valor
Update Conta Set Saldo = @Saldo From inserted I where Conta.Id = I.IdConta
End
GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’001',’Carlos Almeida’,23.78) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’007',’Ana Seixas’,657.90) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’008',’Rita Pinto’,6.00) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’011',’Roger Santos’,144.97) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’014',’Gil Santos’,77.11) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’001',’Mina Rocha’,1234.22) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’003',’Carla Brito’,7887.43) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’004',’Rosa Silva’,0.12) GO
Insert Into ContaEspecial Select Id,100.00 From Conta Where Agencia = ‘01’ And Conta = ‘007’ GO
Insert Into ContaEspecial Select Id,200.00 From Conta Where Agencia = ‘01’ And Conta = ‘011’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘002’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘003’ GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (1, ‘C’,’2011-01-03 10:03:03',24.12) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (10,’C’,’2011-01-05 17:11:34',300.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (3, ‘D’,’2011-01-05 18:40:11',15.66) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (7, ‘D’,’2011-01-10 08:22:01',1200.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-12 19:18:49',320.10) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-16 07:11:20',45.89) GO
Com base na análise dos dados, pode-se afirmar:
Após a execução do script, o comando “Insert Into Movimento (IdConta, Tipo,Data,valor) Values (2, ‘D’,’2011-01-17 14:04:20',757.90)” pode ser executado sem problemas.
Provas
CREATE TABLE Conta (
Id int IDENTITY (1, 1) NOT NULL ,
Agencia char (2) NOT NULL ,
Conta char (3) NOT NULL ,
Nome char (20) NOT NULL ,
Saldo money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE Conta WITH NOCHECK ADD CONSTRAINT PK_Conta PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Conta] ADD CONSTRAINT IX_Conta UNIQUE NONCLUSTERED (Agencia,Conta) ON [PRIMARY]
GO
CREATE TABLE ContaEspecial (
Id int NOT NULL ,
Limite money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE ContaEspecial WITH NOCHECK ADD
CONSTRAINT PK_ContaEspecial PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
CREATE TABLE Movimento (
Id int IDENTITY (1, 1) NOT NULL ,
IdConta int NOT NULL ,
Tipo char (1) NOT NULL ,
Data datetime NOT NULL ,
valor money NOT NULL ,
) ON [PRIMARY]
GO
CREATE TRIGGER Movimento_Insert On Movimento For Insert As
Begin
Declare @qt_rows int,
@Msg char(255),
@Saldo money,
@Limite money,
@Tipo char(1),
@Valor money
Select @Saldo = 0
Select @Limite = 0
Select @qt_rows = @@rowcount
If @qt_rows = 0
Return
Select @Tipo = Tipo from inserted
Select @Valor = Valor from inserted
If Not Exists (Select 1 from Conta C, inserted I where C.Id = I.IdConta)
Begin
Select @Msg = ‘AAAAA’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Else
Select @Saldo = Saldo from Conta C, inserted I where C.Id = I.IdConta
If Exists (Select 1 from ContaEspecial E, inserted I where E.Id = I.IdConta)
Select @Limite = Limite from ContaEspecial E, inserted I where E.Id = I.IdConta
If (@Tipo = ‘D’)
Begin
If ((@Saldo + @Limite) < @Valor)
Begin
Select @Msg = ‘BBBBB’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Select @Saldo = @Saldo - @Valor
End
Else
Select @Saldo = @Saldo + @Valor
Update Conta Set Saldo = @Saldo From inserted I where Conta.Id = I.IdConta
End
GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’001',’Carlos Almeida’,23.78) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’007',’Ana Seixas’,657.90) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’008',’Rita Pinto’,6.00) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’011',’Roger Santos’,144.97) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’014',’Gil Santos’,77.11) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’001',’Mina Rocha’,1234.22) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’003',’Carla Brito’,7887.43) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’004',’Rosa Silva’,0.12) GO
Insert Into ContaEspecial Select Id,100.00 From Conta Where Agencia = ‘01’ And Conta = ‘007’ GO
Insert Into ContaEspecial Select Id,200.00 From Conta Where Agencia = ‘01’ And Conta = ‘011’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘002’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘003’ GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (1, ‘C’,’2011-01-03 10:03:03',24.12) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (10,’C’,’2011-01-05 17:11:34',300.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (3, ‘D’,’2011-01-05 18:40:11',15.66) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (7, ‘D’,’2011-01-10 08:22:01',1200.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-12 19:18:49',320.10) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-16 07:11:20',45.89) GO
Com base na análise dos dados, pode-se afirmar:
Cada inserção na tabela de Movimento provoca, inevitavelmente, uma ou mais atualizações na tabela de Conta.
Provas
CREATE TABLE Conta (
Id int IDENTITY (1, 1) NOT NULL ,
Agencia char (2) NOT NULL ,
Conta char (3) NOT NULL ,
Nome char (20) NOT NULL ,
Saldo money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE Conta WITH NOCHECK ADD CONSTRAINT PK_Conta PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Conta] ADD CONSTRAINT IX_Conta UNIQUE NONCLUSTERED (Agencia,Conta) ON [PRIMARY]
GO
CREATE TABLE ContaEspecial (
Id int NOT NULL ,
Limite money NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE ContaEspecial WITH NOCHECK ADD
CONSTRAINT PK_ContaEspecial PRIMARY KEY CLUSTERED (Id) ON [PRIMARY]
GO
CREATE TABLE Movimento (
Id int IDENTITY (1, 1) NOT NULL ,
IdConta int NOT NULL ,
Tipo char (1) NOT NULL ,
Data datetime NOT NULL ,
valor money NOT NULL ,
) ON [PRIMARY]
GO
CREATE TRIGGER Movimento_Insert On Movimento For Insert As
Begin
Declare @qt_rows int,
@Msg char(255),
@Saldo money,
@Limite money,
@Tipo char(1),
@Valor money
Select @Saldo = 0
Select @Limite = 0
Select @qt_rows = @@rowcount
If @qt_rows = 0
Return
Select @Tipo = Tipo from inserted
Select @Valor = Valor from inserted
If Not Exists (Select 1 from Conta C, inserted I where C.Id = I.IdConta)
Begin
Select @Msg = ‘AAAAA’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Else
Select @Saldo = Saldo from Conta C, inserted I where C.Id = I.IdConta
If Exists (Select 1 from ContaEspecial E, inserted I where E.Id = I.IdConta)
Select @Limite = Limite from ContaEspecial E, inserted I where E.Id = I.IdConta
If (@Tipo = ‘D’)
Begin
If ((@Saldo + @Limite) < @Valor)
Begin
Select @Msg = ‘BBBBB’
Raiserror 23000 @Msg
Rollback Transaction
Return
End
Select @Saldo = @Saldo - @Valor
End
Else
Select @Saldo = @Saldo + @Valor
Update Conta Set Saldo = @Saldo From inserted I where Conta.Id = I.IdConta
End
GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’001',’Carlos Almeida’,23.78) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’007',’Ana Seixas’,657.90) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’008',’Rita Pinto’,6.00) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’011',’Roger Santos’,144.97) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘01’,’014',’Gil Santos’,77.11) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’001',’Mina Rocha’,1234.22) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’003',’Carla Brito’,7887.43) GO
Insert Into Conta (Agencia,Conta,Nome,Saldo) Values (‘02’,’004',’Rosa Silva’,0.12) GO
Insert Into ContaEspecial Select Id,100.00 From Conta Where Agencia = ‘01’ And Conta = ‘007’ GO
Insert Into ContaEspecial Select Id,200.00 From Conta Where Agencia = ‘01’ And Conta = ‘011’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘002’ GO
Insert Into ContaEspecial Select Id,150.00 From Conta Where Agencia = ‘02’ And Conta = ‘003’ GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (1, ‘C’,’2011-01-03 10:03:03',24.12) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (10,’C’,’2011-01-05 17:11:34',300.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (3, ‘D’,’2011-01-05 18:40:11',15.66) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (7, ‘D’,’2011-01-10 08:22:01',1200.00) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-12 19:18:49',320.10) GO
Insert Into Movimento (IdConta,Tipo,Data,valor) Values (4, ‘D’,’2011-01-16 07:11:20',45.89) GO
Com base na análise dos dados, pode-se afirmar:
O script, quando executado, vai inserir quatro linhas na tabela de Conta Especial.
Provas
@OneToOne, @OneToMany, @ManyToOne, @ManyToMany são anotações usadas para mapear relacionamentos entre tabelas.
Provas
Caderno Container