adicionar campos na tabela

SQL Server

05/12/2013

quais os impactos negativos em adicionar campos em uma tabela? e como faço para deixar um valor default nesse campo?
Roniere Almeida

Roniere Almeida

Curtidas 0

Respostas

Fabiano Carvalho

Fabiano Carvalho

05/12/2013

ALTER TABLE [SUA_TABELA] ADD DIA_ATUAL DATETIME DEFAULT GETDATE()
Deve-se adicionar campos somente quando o mesmo não estiver em utilização, por segurança.
GOSTEI 0
Alex Lekao

Alex Lekao

05/12/2013

Oi Roniere, bom dia!!!

So complementando o que o Fabiano disse.

Nesse caso do campo com valores default, caso seja necessario vc pode usar a opcao persistence ou persistente, nao lembro a escrita, para que o campo so seja calculado(atualizado) somente quando houver alteracao nos campos que originarem esse campo calculado, caso contrario ele permanecera inalterado e com isso nao causa impacto no desempenho da aplicacao, relatorio, ou o que for qdo for fazer uso do campo, embora acredito que esse impacto na perfomance seja pequeno, com algumas excecoes.

Abraco.
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/12/2013

ALTER TABLE [SUA_TABELA] ADD DIA_ATUAL DATETIME DEFAULT GETDATE()
Deve-se adicionar campos somente quando o mesmo não estiver em utilização, por segurança.


esse GETDATE() insere a data atual não é?

um outra pergunta, caso eu queira colocar um campo, tipo, carteira de trabalho(CTPS) e desejo colocar o valor default somente 0000000(exemplo).
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/12/2013

Oi Roniere, bom dia!!!

So complementando o que o Fabiano disse.

Nesse caso do campo com valores default, caso seja necessario vc pode usar a opcao persistence ou persistente, nao lembro a escrita, para que o campo so seja calculado(atualizado) somente quando houver alteracao nos campos que originarem esse campo calculado, caso contrario ele permanecera inalterado e com isso nao causa impacto no desempenho da aplicacao, relatorio, ou o que for qdo for fazer uso do campo, embora acredito que esse impacto na perfomance seja pequeno, com algumas excecoes.

Abraco.


poderia colocar um exemplo Alex, a tabela antes e depois da alteração.
obrigado.
GOSTEI 0
Jefferson Santos

Jefferson Santos

05/12/2013

ALTER TABLE [SUA_TABELA] ADD DIA_ATUAL DATETIME DEFAULT GETDATE()
Deve-se adicionar campos somente quando o mesmo não estiver em utilização, por segurança.


esse GETDATE() insere a data atual não é?

um outra pergunta, caso eu queira colocar um campo, tipo, carteira de trabalho(CTPS) e desejo colocar o valor default somente 0000000(exemplo).


Getdate() - Data Atual
Campo Default - Você escolhe o valor padrão
GOSTEI 0
Alex Lekao

Alex Lekao

05/12/2013

ALTER TABLE [SUA_TABELA] ADD DIA_ATUAL DATETIME DEFAULT GETDATE()
Deve-se adicionar campos somente quando o mesmo não estiver em utilização, por segurança.


esse GETDATE() insere a data atual não é?

um outra pergunta, caso eu queira colocar um campo, tipo, carteira de trabalho(CTPS) e desejo colocar o valor default somente 0000000(exemplo).


eh possivel sim, apenas coloque no lugar do getdate() o valor que quer q fique no campo, no caso os 0000000.
GOSTEI 0
Alex Lekao

Alex Lekao

05/12/2013

Oi Roniere, bom dia!!!

So complementando o que o Fabiano disse.

Nesse caso do campo com valores default, caso seja necessario vc pode usar a opcao persistence ou persistente, nao lembro a escrita, para que o campo so seja calculado(atualizado) somente quando houver alteracao nos campos que originarem esse campo calculado, caso contrario ele permanecera inalterado e com isso nao causa impacto no desempenho da aplicacao, relatorio, ou o que for qdo for fazer uso do campo, embora acredito que esse impacto na perfomance seja pequeno, com algumas excecoes.

Abraco.


poderia colocar um exemplo Alex, a tabela antes e depois da alteração.
obrigado.


Ola Roniere,

Vou colocar um Codigo Aqui parecido com o que usamos aqui no ERP da empresa.

/* Sem o Campo*/
CREATE TABLE Produto(
	CodFilial varchar(3) NULL,
	CodProduto varchar(6) NULL,
	CodGrupo varchar(6) NULL,
	CodEAN varchar(15) NULL,
	NumFabrica varchar(25) NULL,
	Descricao varchar(60) NULL,
	CodFabrica varchar(30) NULL,
	UN varchar(2) NULL,
	Local1 varchar(10) NULL,
	Local2 varchar(10) NULL,
	Estoque numeric(12, 3) NULL,
	EstGarantia numeric(12, 3) NULL,
) 


/* Criando o Campo na Tabela*/
Alter Table Produto Add SaldoEstDisponivel As (Estoque-EstGarantia) Persisted;



/* Criando o Campo Apenas com Valore Padrao Zero */
Alter Table Produto Add SaldoEstDisponivel Numeric(12,3) Default (0.000);


/* Tabela com o Campo */
CREATE TABLE Produto(
	CodFilial varchar(3) NULL,
	CodProduto varchar(6) NULL,
	CodGrupo varchar(6) NULL,
	CodEAN varchar(15) NULL,
	NumFabrica varchar(25) NULL,
	Descricao varchar(60) NULL,
	CodFabrica varchar(30) NULL,
	UN varchar(2) NULL,
	Local1 varchar(10) NULL,
	Local2 varchar(10) NULL,
	Estoque numeric(12, 3) NULL,
	EstGarantia numeric(12, 3) NULL,
	SaldoEstDisponivel  AS (Estoque-EstGarantia) PERSISTED
) 


GOSTEI 0
Roniere Almeida

Roniere Almeida

05/12/2013

perfeito Alex, agora da uma sacada bem no codigo. obrigado.
GOSTEI 0
Alex Lekao

Alex Lekao

05/12/2013

perfeito Alex, agora da uma sacada bem no codigo. obrigado.


de nada... Roniere... rssr

so percebi agora que faltou o codigo com o campo Default.... rsrsrsr

Mas se ajudou, maravilha... rssr

Abraco.

Alex - Lekao
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/12/2013

ajudou, mas posta aew com o codigo.
GOSTEI 0
Alex Lekao

Alex Lekao

05/12/2013

Segue:

CREATE TABLE Produto(
	CodFilial varchar(3) NULL,
	CodProduto varchar(6) NULL,
	CodGrupo varchar(6) NULL,
	CodEAN varchar(15) NULL,
	NumFabrica varchar(25) NULL,
	Descricao varchar(60) NULL,
	CodFabrica varchar(30) NULL,
	UN varchar(2) NULL,
	Local1 varchar(10) NULL,
	Local2 varchar(10) NULL,
	Estoque numeric(12, 3) NULL,
	EstGarantia numeric(12, 3) NULL,
	SaldoEstDisponivel numeric(12, 3) NULL Default (0.000)
) 
GOSTEI 0
Roniere Almeida

Roniere Almeida

05/12/2013

obrigado, mais uma vez Alex.
GOSTEI 0
Alex Lekao

Alex Lekao

05/12/2013

disponha...

precisando eh so falar.
GOSTEI 0
Isaac Jose

Isaac Jose

05/12/2013

Segue:

CREATE TABLE Produto(
	CodFilial varchar(3) NULL,
	CodProduto varchar(6) NULL,
	CodGrupo varchar(6) NULL,
	CodEAN varchar(15) NULL,
	NumFabrica varchar(25) NULL,
	Descricao varchar(60) NULL,
	CodFabrica varchar(30) NULL,
	UN varchar(2) NULL,
	Local1 varchar(10) NULL,
	Local2 varchar(10) NULL,
	Estoque numeric(12, 3) NULL,
	EstGarantia numeric(12, 3) NULL,
	SaldoEstDisponivel numeric(12, 3) NULL Default (0.000)
) 



boa tarde a todos. :) Lekao se sei se utiliza essa tabela ou alguma parecida no dia a dia..
bom se me permite vou bagunçar ela um pouco :)

CREATE TABLE Produto(
BintCodFilial bigint NULL,
IntCodProduto int NULL,
IntCodGrupo int NULL,
NumCodEAN numeric NULL,
VcharNumFabrica varchar(25) NULL,
VcharDescricao varchar(60) NULL,
NumCodFabrica NULL,
VcharUN varchar(2) NULL,
VcharLocal1 varchar(10) NULL,
VcharLocal2 varchar(10) NULL,
NumEstoque numeric(12, 3) NULL,
NumEstGarantia numeric(12, 3) NULL,
NumSaldoEstDisponivel numeric(12, 3) NULL Default (0.000)
)

Vi que vc tem campos de codigo e atribui valores varchar. isso como elementos de busca prejudica e muito no desempenho das aplicações,
atualizações etc por isso se forem campo numericos sugiro que os criem assim :)

agora o que vc deve estar se perguntando.porque ele afrescalhei o nome dos campos :)
e eu lhe respondo digamos que no dia a dia vc faz muitas consultas em muitas tabelas diferentes ou que essas tabelas é de uso de muitas pessoas.

de cara qualquer um vai saber o valor dos campos sem precisar verificar com sp_helptext ou algo parecido :)
com isso a uma ganho de tempo e de estetica criando assim um certo padrão :)

ate mais e espero ter ajudado ou ao menos nao ter atrapalhado o post ...
GOSTEI 0
Jefferson Santos

Jefferson Santos

05/12/2013

Corretíssimo o Issac a hora em que se vai criar uma tabela deve se atentar a estes detalhes.
Eu utilizo o i na frente das colunas int e s para varchar o que já me ajuda e muito na hora de procurar um dado no SQL.
Fora que não é só eu que utilizo o banco.
GOSTEI 0
Alex Lekao

Alex Lekao

05/12/2013

Ola Isaac e Jefferson, boa tarde!!!

Meu camaradas, entendo o que disseram e concordo com vcs em numero e grau.

O nosso problema no caso eh que a modelagem do banco nao foi eu quem fez, nos recebemos essa modelagem do Pessoal que nos forneceu o ERP e infelizmente esse eh um tipo de sugestao que nao me atreveria a dar, pq nao gostam muito de sugestoes... rsrsrsr ate compreendem e concordam com algumas, mas... rsrsr

se eu mostrar para vcs como sao as tabelas vcs vao chamar um exorcista e achar que isso eh coisa do demonio... rssrsr

esse q coloquei no post eu eliminei aproximadamente 95% dos campos e alterei algumas coisas para a estrutura que o Roniere estava querendo...

Mas para mim nao tem erro as observacoes que deram, para mim eh aprendizado, afinal de contas nao manjo nada de SQL e tudo que eh sugerido e indicado estou "degustando" e muito... rsrsrs

entao com isso so tenho que agradecer... rsrsr

Abraco.

Alex - Lekao

GOSTEI 0
POSTAR