CREATE TABLE multitable_outbox ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, tenant_id BIGINT UNSIGNED NOT NULL, audit_log_id BIGINT UNSIGNED NULL, resource VARCHAR(64) NOT NULL, resource_id BIGINT UNSIGNED NOT NULL, action VARCHAR(64) NOT NULL, payload JSON NOT NULL, dedupe_key VARCHAR(191) NOT NULL, status VARCHAR(24) NOT NULL DEFAULT 'pending', attempts INT NOT NULL DEFAULT 0, available_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), last_error TEXT NOT NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), PRIMARY KEY (id), UNIQUE KEY uk_multitable_outbox_audit (audit_log_id), UNIQUE KEY uk_multitable_outbox_dedupe (dedupe_key), KEY idx_multitable_outbox_pending (status, available_at), KEY idx_multitable_outbox_resource (tenant_id, resource, resource_id), CONSTRAINT fk_multitable_outbox_tenant FOREIGN KEY (tenant_id) REFERENCES tenants(id), CONSTRAINT fk_multitable_outbox_audit FOREIGN KEY (audit_log_id) REFERENCES audit_logs(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;