Jump to content
Sign in to follow this  
getchar

validar se é maior de idade

Recommended Posts

getchar

Viva pessoal,

tenho a seguinte dúvida:

criei uma stored procedure para alterar o tipo de dados a inserir num atributo para que seja sempre entre 0 e 20.

utilizei este:

CREATE PROCEDURE CriarRegras
AS
ALTER TABLE nota
ADD CHECK (nota between 0 AND 20)
RETURN

Agora o que pretendo é criar dentro deste procedure uma validação que me permita ir a tabela aluno e alterar o atributo data_nascimento para que a pessoa so consiga inserir se for maior de idade (>18 anos).

Qual a melhor forma de se fazer isto?

Obrigado pela vossa ajuda.

abraço,

Miguel

Share this post


Link to post
Share on other sites
getchar

acho que já encontrei a solução:

CREATE PROCEDURE CriarRegras
AS
ALTER TABLE nota
ADD CHECK (nota between 0 AND 20)
ALTER TABLE aluno
ADD check ((datepart(year,data_nasc)+18)<(datepart(year,getdate)))
RETURN

Share this post


Link to post
Share on other sites
bruno1234

Isso valida o ano mas não o mês e o dia.

Assim deve dar para o que precisas:

declare @dn date;
set @dn = '01-01-2000';

select
case
when (datediff(d, @dn, GETDATE()) - datediff(d, dateadd(year, -18, GETDATE()), GETDATE())) >= 0
	then 1
else 0
end as maior18;


Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Share this post


Link to post
Share on other sites
getchar

De facto, n me tinha lembrado do factor mês, dia...

obrigado Bruno.

Aproveito para pedir ajuda na seguinte stored procedure:

Recebendo um código de disciplina, aumente em 10% todas as notas dessa disciplina (o codigo está numa tabela e as notas noutra). Ter em conta que nenhuma nota deve exceder os 20 valores e que ou todas as notas da disciplina são bem alteradas ou nenhuma alteração se deve tornar efectiva (refere-se a criar uma transaction).

Share this post


Link to post
Share on other sites
getchar

Acho que a actualização das notas para +10% já consegui. que seria algo assim:

CREATE PROCEDURE benesse
@codigodisciplina int
AS
BEGIN TRANSACTION aumentarnota
UPDATE nota
SET nota=nota*1.1
WHERE cod_discip=@codigodisciplina
commit transaction aumentarnota

agora para o case... qual é a sintaxe? e insiro-a logo a seguir ao BEGIN TRANSACTION?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.