我正在开发一个使用Postgres作为其数据库的Rails 3应用程序.我有下面的表格:
Table "public.test"
Column | Type | Modifiers
---------------+---------+-----------
id | integer | not null
some_other_id | integer |
Indexes:
"test_pkey" PRIMARY KEY, btree (id)
"some_other_id_key" UNIQUE CONSTRAINT, btree (some_other_id)
Run Code Online (Sandbox Code Playgroud)
这有两列:
现在如果我尝试插入一个带有重复的行some_other_id
,它会失败(好)并且我在Postgres日志中得到以下输出:
Run Code Online (Sandbox Code Playgroud)ERROR: duplicate key value violates unique constraint "some_other_id_key"
问题是,我的应用程序尝试添加相同的ID两次是完全主线,并且我的日志被这个"错误"消息垃圾邮件,这会导致各种问题:文件占用大量磁盘空间,诊断会丢失噪音,Postgres必须丢弃diags以保持日志文件的大小限制等.
有谁知道我怎么做:
INSERT
.INSERT
.我听说过规则和触发器,但是我无法工作(虽然我不是Postgres专家).请注意,任何解决方案都需要使用Rails,它执行如下插入:
INSERT INTO test (some_other_id) VALUES (123) RETURNING id;
Run Code Online (Sandbox Code Playgroud) 我正在编写一个需要定义一些环境变量的 makefile。我正在尝试使用这样的东西来实现这一目标:
define check-var-defined
ifndef $(1)
$(error $(1) is not defined)
endif
endef
$(call check-var-defined,VAR1)
$(call check-var-defined,VAR2)
$(call check-var-defined,VAR3)
rule1:
#stuff
Run Code Online (Sandbox Code Playgroud)
当我运行不带参数的 make 时,我得到:
$ make
Makefile:7: *** VAR1 is not defined. Stop.
Run Code Online (Sandbox Code Playgroud)
但是当我使用指定的 VAR1 运行它时,我得到了同样的错误。
$ make VAR1=hello
Makefile:7: *** VAR1 is not defined. Stop.
Run Code Online (Sandbox Code Playgroud)
有什么想法为什么这行不通吗?我该怎么做才能使这项工作成功?提前致谢。
(请注意,我需要检查运行 makefile 时是否实际定义了变量,因为我需要进一步包含另一个 makefle,并且在执行此操作时需要正确设置变量)。