我正在尝试创建一个表,其中一列只应接受'YEAR' 例如:2017年,2018年,2019年以及“CURRENT YEAR”作为默认值。
我无法创建这样的专栏 - 你能帮助我吗?
预期产出:
DELETE t FROM (SELECT TOP (10000000) * FROM #t ORDER BY IIF(id = 0, 0, id)) t
OPTION (MAXDOP 1)
数据库服务器是Informix。
答案 0 :(得分:1)
你可以这样做:
create table t2 (c1 datetime year to year default current year to year, c2 int);
insert into t2 (c2) values(100);
insert into t2 values ('2017',101);
insert into t2 values (current,102);
select * from t2;
c1 c2
2018 100
2017 101
2018 102
答案 1 :(得分:0)
您可以使用多种类型中的任何一种。 “明显的”是:
最不明显的一个是:
另一种选择只是一个整数类型:
从长远来看,整数类型可能比DATETIME YEAR TO YEAR更容易使用;我几乎肯定会使用INTEGER或SMALLINT。
如何创建一个带有“年”列的表格,该列中的默认值是当前年份?
嗯;这对INTEGER类型很难。那时,DATETIME来救援:
CREATE TABLE YearTable
(
RowNumber SERIAL NOT NULL PRIMARY KEY,
YearColumn DATETIME YEAR TO YEAR NOT NULL DEFAULT CURRENT YEAR TO YEAR,
DateColumn DATE NOT NULL DEFAULT TODAY
);
INSERT INTO YearTable(RowNumber) VALUES(0);
SELECT * FROM YearTable;
例如(在环境中假设DBDATE=Y4MD-
)会产生:
1 2018 2018-03-05
即使它们看似合理,你也不能使用任意表达式 - 这是令人厌烦的。因此,如果您需要默认值,则DATETIME YEAR TO YEAR类型是选择的类型。 (这是jrenaut在answer中建议的内容。)
你可以安排一个整数类型的触发器;但这是相当困难的工作。