0

我正在使用 PostgreSQL 并创建了下表:

CREATE TABLE "TrainingMatrix"
(
  payroll text NOT NULL,
  "TrainingName" text NOT NULL,
  "Institute" text,
  "TrainingDate" date NOT NULL,
  "ExpiryDate" date,
  "RecorderName" text,
  "EnteringDate" date,
  CONSTRAINT "TrainingMatrix_pkey" PRIMARY KEY (payroll, "TrainingName", "TrainingDate")
)

我想让EnteringDate机器中的当前日期自动填充每个输入的记录。

4

4 回答 4

1
CREATE TABLE "TrainingMatrix"
(
  payroll text NOT NULL,
  "TrainingName" text NOT NULL,
  "Institute" text,
  "TrainingDate" date NOT NULL,
  "ExpiryDate" date,
  "RecorderName" text,
  "EnteringDate" date not null default current_timestamp,
  CONSTRAINT "TrainingMatrix_pkey" PRIMARY KEY (payroll, "TrainingName", "TrainingDate")
)

current_timestamp 相当于 Now() 将给出当前日期和时间(包括时区) http://www.postgresql.org/docs/8.1/static/functions-datetime.html

将列定义为非空也有助于确保没有明确输入没有时间戳的记录。

于 2013-09-23T14:03:37.403 回答
1
CREATE TABLE "TrainingMatrix"
(
  payroll text NOT NULL,
  "TrainingName" text NOT NULL,
  "Institute" text,
  "TrainingDate" date NOT NULL,
  "ExpiryDate" date,
  "RecorderName" text,
  "EnteringDate" date NOT NULL default current_date,--"EnteringDate" date,
  CONSTRAINT "TrainingMatrix_pkey" PRIMARY KEY (payroll, "TrainingName", "TrainingDate")
)
于 2013-09-23T14:05:58.217 回答
0

使用默认关键字

column datatype default sysdate

也检查一下

如何从 11g 中的 select 语句中为新创建的表的列设置默认值

于 2013-09-23T13:58:03.453 回答
0

通过使用默认的 sysdate,您可以获得所需的输出。

CREATE TABLE "TrainingMatrix"
(
  payroll text NOT NULL,
  "TrainingName" text NOT NULL,
  "Institute" text,
  "TrainingDate" date NOT NULL,
  "ExpiryDate" date,
  "RecorderName" text,
  "EnteringDate" date default sysdate,
  CONSTRAINT "TrainingMatrix_pkey" PRIMARY KEY (payroll, "TrainingName", "TrainingDate")
)
于 2013-09-23T13:59:52.367 回答