2016-11-19 23 views
0

テーブルを作成するときにage < 40 from birthdateのチェック制約を設定するにはどうすればよいですか?以下のような 何か:テーブルを作成し、属性を数え、それをグループ化し、チェックするとき、それは> 6かどうsqlチェック制約の生年月日からの年齢

SELECT DATEDIFF(yy,” Birthdate ”, getdate()) as age 
age<40 

は、その後どのように私は別のチェック制約を持っているだろうか?

以下のようなチェック制約ですが?

select count(attributex) as counter from entityx 
group by attributex 
having counter>6 
+2

互換性のないデータベースタグを削除しました。あなたはMySQLとOracleを持っていましたが、コードはSQL Serverです。 –

答えて

0
create table person (Birthdate date check (DATEDIFF(year,Birthdate,getdate()) < 40)) 

insert into person (Birthdate) values ('1990-01-01'); 

(1行(s)は影響を受けた)

insert into person (Birthdate) values ('1970-01-01'); 
:このことはなく、この例のように最小の限界を最大限界を確認するために、より理にかなっています

メッセージ547、レベル16、状態0、行7
INSERTステートメントがCHECK制約 "CK__person__Birthdat__30F848ED"と競合しました。競合はデータベース "dmarkovitz"、テーブル "dbo.person"、列 'Birthdate'で発生しました。

0

チェック制約をテーブルを作成: http://www.w3schools.com/sql/sql_check.asp

そして、2つ目の質問のために、私はあなたが(年齢などの条件のために挿入された行数を制限するチェック制約を入れたいと思います> 6および年齢< 40)。

CREATE TABLE EnitityX 
(
Age int NOT NULL, 
RecordId int NOT NULL AUTO_INCREMENT, 
CHECK (Age>6), 
CHECK (Age<40), 
CHECK (RecordId<6) 
) 
+0

助けてくれてありがとう、しかし、私は派生attirubuteとして年齢を計算する必要があります、私はちょうど@Dudu Markovitz答えが私の問題を解決すると思うので、年齢ではない生年月日があります。 – novice

関連する問題