Problem beim Erstellen einer Rule

Hallo! Bin neu bei Postgres und hätte eine Frage welche rules betrifft.

Ich habe folgende Tabelle erstellt.

create table emp (
	empno		numeric(4,0) not null,
	ename		character varying(10),
	job			character varying(9),
	mgr			numeric(4,0),
	hiredate	date,
	sal			numeric(7,2),
	comm		numeric(7,2),
	deptno		numeric(2,0),
	CONSTRAINT pk_emp PRIMARY KEY (empno),
	CONSTRAINT fk_deptno FOREIGN KEY (deptno) REFERENCES dept(deptno),
	CONSTRAINT fk_mgr FOREIGN KEY (mgr) REFERENCES emp(empno)
);

… für diese dann eine View

CREATE OR REPLACE VIEW v_emp
	AS SELECT * FROM dbo.emp
		WHERE mgr IN (SELECT empno FROM dbo.emp WHERE ename = session_user);

… für diese View dann eine Update-Rule

CREATE OR REPLACE RULE emp_ename_job_mgr_depno_upd AS ON UPDATE TO v_emp
	DO INSTEAD
	UPDATE emp
	SET ename = NEW.ename, 
		job = NEW.job, 
		mgr = NEW.mgr, 
		deptno = NEW.mgr 
	WHERE empno = OLD.empno;

Versuche ich dann ein Update

UPDATE dbo.v_emp
	SET ename = 'abc'
	WHERE empno = 7782;

… bekomme ich folgende Fehlermeldung:

FEHLER: Feldüberlauf bei Typ »numeric«
DETAIL: Ein Feld mit Präzision 2, Skala 0 muss beim Runden einen Betrag von weniger als 10^2 ergeben.

Versteh leider nicht wieso das nicht geht. Bitte helft mir :frowning:

Hat zwar (vermutlich) nix mit Deiner Fehlermeldung zu tun, aber warum verwendest Du für offensichtliche INTEGER-Felder NUMERIC?

EMPNO und DEPTNO sind doch sicherlich immer ganzzahlig, oder?

Deine Fehlermeldung scheint mir übrigens nicht zu den gezeigten Fakten zu passen.