trigger function
前adding/updating
に を作成するにはどうすればよいですか。 は、同じプロパティをfunction
持つレコードをチェックする必要があります(つまり、 と同じプロパティを持つ既存のものとのid
比較)。ID を持つレコードが見つかった場合、そのエントリは に設定され、追加されます。そのレコードで見つかった属性の対応する値を含むエントリ (新しいレコードに設定されているものを除く)。が空の場合、新しい時間は現時点でのその時間に等しくなります。したがって、新しい記録は祖先のようなものです。その ID を持つレコードが見つかった場合、現在の時刻として施設とともにデータベースに追加されます。id
objects
temporary_object
time_dead
time_dead
time_create
time_create
time_dead's
time_create
たとえば、ここに簡単な説明があります(説明目的のためだけです)
id time_create time-dead student amount
1 06.12 07.12 henry 500
1 07.12 henry 1000
したがって、id 1 の henry という学生が 06:12 に部屋に入り、07:12 に退室した場合、次に別の部屋に再び入ると、time_dead は time_create と等しくなります (つまり、古いエントリの time_dead と新しいエントリの time_create - は等しくなります)。以下のSQL形式の私のテーブル
CREATE TABLE temporary_object
(
id integer NOT NULL,
time_create timestamp without time zone NOT NULL,
time_dead timestamp without time zone,
CONSTRAINT temporary_object_pkey PRIMARY KEY (id, time_create)
)
CREATE TABLE persons
(
fname text,
fsurname text,
)
INHERITS (temporary_object)
CREATE TABLE rooms
(
roomnum integer,
course integer,
passport text,
students_number text
)
INHERITS (temporary_object)
これは私がやろうとしていることですが、残念ながら、それを完了する方法がわかりませんが、100%正しくありません。誰かが助けてくれるかもしれません
CREATE TRIGGER trigger2
BEFORE INSERT OR UPDATE
ON persons
FOR EACH ROW
EXECUTE PROCEDURE func1();
そしてこれが関数です
CREATE OR REPLACE FUNCTION func1() RETURNS TRIGGER AS $persons$
DECLARE
time_create integer;
time_dead timestamp;
id timestamp;
BEGIN
IF (TG_OP = 'INSERT') THEN
time_create=