当使用check()表示以下代码中的分类变量时,我收到此消息“无效的列名'status'”。谁能解决这个问题?
CREATE TABLE [dbo].[trips]
(
id int,
client_id int,
driver_id int,
city_id int,
status varchar(128) check(status in('completed', 'cancelled_by_driver', 'cancelled_by_client')),
request_at date
)
INSERT INTO [dbo].[trips] (id, client_id, driver_id, city_id, status, request_at)
SELECT '1', '1', '10', '1', 'completed', '2013-10-01'
UNION ALL
SELECT '2', '2', '11', '1', 'cancelled_by_driver', '2013-10-01'
UNION ALL
SELECT '3', '3', '12', '6', 'completed', '2013-10-01'
---编辑---
很抱歉,我的原始示例的“状态”列的级别不一致:“状态varchar(128)check(status in('small','medium','large'))'行必须替换为“ status varchar(128)check(状态输入(“已完成”,“ cancelled_by_driver”,“ cancelled_by_client”))。”
此外,在删除具有相同名称“ trips”的现有表之后,现在可以创建表。表重复导致了问题。