질문에 사용 된 메타 언어를 인식하지 못하기 때문에 DBMS가 수행 할 수있는 것과 비교할 수있는 것이 무엇인지 잘 모르겠습니다. 이것은 당신이 삽입 작업에 지정하지 않을 경우 4 시간 각 열에는 기본값이 할당됩니다있는 테이블 제공
CREATE TABLE ExampleDatesAndTimes
(
rownumber SERIAL NOT NULL PRIMARY KEY,
date_column DATE DEFAULT TODAY NOT NULL,
datetime_yd DATETIME YEAR TO DAY
DEFAULT CURRENT YEAR TO DAY NOT NULL,
datetime_ys DATETIME YEAR TO SECOND
DEFAULT CURRENT YEAR TO SECOND NOT NULL,
datetime_hs DATETIME HOUR TO SECOND
DEFAULT CURRENT HOUR TO SECOND NOT NULL,
payload VARCHAR(255) NOT NULL
);
:
INSERT INTO ExampleDatesAndTimes(Payload) VALUES ("Hello");
를 다른 한편을, 열을 지정하면 지정된 값이 우선합니다. 그 DATE 값은 DAY 값에 DATETIME의 년처럼 그래서는 DBDate = "Y4MD-을"있으리라 믿고있어 : 여기
INSERT INTO ExampleDatesAndTimes
VALUES(0, '1066-10-14', '2001-01-01', '2012-11-10 09:08:07',
'23:23:21', "Gezundheit");
는, 값이 지정된 모든, 그래서 사람들은 저장된 값이다. ISQL Perform (및 가장 일반적인 I4GL 프로그램)과 같은 프로그램은 모든 열에 값을 제공하므로 기본 메커니즘이 적용되지 않습니다.
트리거와 함께 재생하면 UPDATE에서 값을 변경할 수 있으므로 날짜를 삽입하고 '마지막으로 업데이트 한'열을 사용할 수 있습니다. 원하는 경우 created_by 및 updated_by 열을 추가 할 수 있습니다. 다시 말하면 기본값과 명시 적으로 제공된 값에 대해 걱정해야합니다.
이제 IDS 7.3x를 사용하고 있기 때문에 1 년 또는 2 년 전에는 결국 서비스가 중단되었으므로 IDS 11.70에서 사용할 수있는 것과 약간 다른 기능을 사용하게됩니다. 업그레이드를 고려해야합니다.
업데이트시 트리거로 재생할 때이 코드가 발견되었습니다. 2006 년 날짜.
CREATE TABLE talx_000
(
i SERIAL NOT NULL PRIMARY KEY,
s CHAR(30) NOT NULL,
m_user VARCHAR(32) DEFAULT USER NOT NULL,
m_time DATETIME YEAR TO SECOND DEFAULT CURRENT YEAR TO SECOND NOT NULL
);
CREATE PROCEDURE current_user_time()
RETURNING VARCHAR(32) AS m_user, DATETIME YEAR TO SECOND AS m_time;
RETURN user(), CURRENT YEAR TO SECOND - 1 UNITS DAY;
END PROCEDURE;
CREATE TRIGGER upd_talx_000 UPDATE ON talx_000
REFERENCING NEW AS NEW FOR EACH ROW
(EXECUTE PROCEDURE current_user_time() INTO m_user, m_time);
INSERT INTO talx_000(s) VALUES("cached nonsense");
INSERT INTO talx_000(s, m_user) VALUES("inserted user", "sphinx");
INSERT INTO talx_000(s, m_time)
VALUES("inserted time", DATETIME(1066-10-14 15:23:31) YEAR TO SECOND);
INSERT INTO talx_000(s, m_time, m_user)
VALUES("inserted both", DATETIME(1805-10-21 13:15:00) YEAR TO SECOND,
"nelson");
SELECT * FROM talx_000;
DROP TRIGGER upd_talx_000;
CREATE PROCEDURE upd_talx_000(i_val INTEGER);
UPDATE talx_000
SET m_user = "brandywine",
m_time = DATETIME(3019-03-25 13:00:00) YEAR TO SECOND
WHERE i = i_val;
END PROCEDURE;
CREATE TRIGGER upd_talx_000 UPDATE ON talx_000
REFERENCING NEW AS NEW FOR EACH ROW
(EXECUTE PROCEDURE upd_talx_000(NEW.i));
INSERT INTO talx_000(s) VALUES("cached nonsense");
INSERT INTO talx_000(s, m_user) VALUES("inserted user", "sphinx");
INSERT INTO talx_000(s, m_time)
VALUES("inserted time", DATETIME(1066-10-14 15:23:31) YEAR TO SECOND);
INSERT INTO talx_000(s, m_time, m_user)
VALUES("inserted both", DATETIME(1805-10-21 13:15:00) YEAR TO SECOND,
"nelson");
SELECT * FROM talx_000;
재미있게 보내십시오!
감사합니다. jon - 예. 전에 가지고 있던 몇 가지 informix 질문을 업그레이드하는 것에 대해 경고했습니다. 내 전화가 아니지만, 나를 보살펴 주셔서 감사합니다. meta-lang에 관한 한 Jenzabar는 Informix에서 SIS를 작성했으며 기본 프로세스 중 일부는 추가 정보로 인해 – CheeseConQueso
과 같이 변경되었습니다. - 나는 uid, id, 영향을받는 영역, 취해진 조치 등을 가지고 있습니다. .... 그리고 나는 isql을 통해 테스트 삽입을했고 날짜 필드는 자동으로 현재 날짜로 채워졌다. 오늘 나는 업데이 트를 시도하고 그 필드를 수정하지 못했습니다 – CheeseConQueso
btw - wtf는 페이로드 = "Gezundheit"에 대한 hahahah 무엇입니까? – CheeseConQueso