In SQL Server 2005, how do I set a column of integers to ensure values are greater than 0?

本秂侑毒 提交于 2019-12-01 01:32:36

问题


This is probably a simple answer but I can't find it. I have a table with a column of integers and I want to ensure that when a row is inserted that the value in this column is greater than zero. I could do this on the code side but thought it would be best to enforce it on the table.

Thanks!

I was in error with my last comment all is good now.


回答1:


You can use a check constraint on the column. IIRC the syntax for this looks like:

create table foo (
    [...]
   ,Foobar int not null check (Foobar > 0)
    [...]
)

As the poster below says (thanks Constantin), you should create the check constraint outside the table definition and give it a meaningful name so it is obvious which column it applies to.

alter table foo
  add constraint Foobar_NonNegative
      check (Foobar > 0)

You can get out the text of check constraints from the system data dictionary in sys.check_constraints:

select name
      ,description
  from sys.check_constraints
 where name = 'Foobar_NonNegative'



回答2:


Create a database constraint:

ALTER TABLE Table1 ADD CONSTRAINT Constraint1 CHECK (YourCol > 0)

You can have pretty sophisticated constraints, too, involving multiple columns. For example:

ALTER TABLE Table1 ADD CONSTRAINT Constraint2 CHECK (StartDate<EndDate OR EndDate IS NULL)



回答3:


I believe you want to add a CONSTRAINT to the table field:

ALTER TABLE tableName WITH NOCHECK
ADD CONSTRAINT constraintName CHECK (columnName > 0)

That optional NOCHECK is used to keep the constraint from being applied to existing rows of data (which could contain invalid data) & to allow the constraint to be added.




回答4:


Add a CHECK constraint when creating your table

CREATE TABLE Test(
      [ID] [int]  NOT NULL,
      [MyCol] [int] NOT NULL CHECK (MyCol > 1)
)


来源:https://stackoverflow.com/questions/205073/in-sql-server-2005-how-do-i-set-a-column-of-integers-to-ensure-values-are-great

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!