我一直在尝试创建一个触发器,该触发器将在DateAdded列中找到空值,并将其替换为当前日期或GETDATE(),而我似乎正在编写许多行,似乎很简单,更新后的更新是正确的吗?
USE MyGuitarShop;
GO
IF OBJECT_ID('Products_INSERT') IS NOT NULL
DROP TRIGGER Products_INSERT;
GO
CREATE TRIGGER Products_INSERT
ON Products
AFTER INSERT, UPDATE
AS
IF EXISTS (SELECT Da
我在ORACLE中键入以下SQL并将其传递:
select 1 from dual where 0=null;
为什么SQL通过了,而且看起来很奇怪,没有编译错误。此外,如果null是表中的varchar2列,它也将传递。
create table test
(
a varchar2(100),
b varchar2(100)
)
insert into test(a,b) VALUES (null, 'abc');
commit;
select * from test where a=0
更新:
因为列'a‘是varchar2类型,0是数字类型,如果a不
可能重复:
如果您生成一个查询以将数据插入表"MyTab“中的列--年龄、性别、道布、ID
INSERT INTO MyTab
VALUES (22, '', '', 4)
“性”栏目的价值是什么&道布?是空的吗?
如果值为空,那么--
SELECT * FROM MyTab
WHERE Sex=NULL
上面的查询提供输出-没有选择行-为什么??
如果值不为空,那么--
SELECT * FROM Mytab
WHERE Sex IS NULL
上面的查询给出了输出
我有一个存储过程,我必须修改它,使其不接受空字符串或null。 我目前将其作为存储过程的一部分 IF NOT EXISTS (SELECT * FROM dbo.tblUserCode WHERE iUserID = @UserID)
BEGIN
INSERT INTO dbo.tblUserCode (iUserID, sCode)
VALUES (@UserID, @Unlock)
END 但是,如果值是null或字符串,我不想在表中输入任何内容。该表只包含具有代码的用户ids。当创建用户时,它当前存储0和空字符串,并且它们将插槽保留为空。我知道它是这一行,因为我的访
我正在使用MSSQL 2008。
我的插入声明如下:
INSERT INTO [DB1].[dbo].[SpotArtSong](ID)
SELECT SNG.S_ID
FROM [DB1].[dbo].[SpotArtSong] SPOT
INNER JOIN [DB2].[dbo].[nt-art] ART
ON ART.Artist_Name LIKE SPOT.[Artist]+'%'
INNER JOIN [DB2].[dbo].[nt-sng] SNG
ON ART.Artist_ID = SNG.Artist_ID
AND left(SNG.SONG_TI
=query(A1:S10,"select C,D,E,F,H,K,P,R,S WHERE Q='USA' AND R matches 'Florida|NY|'''
我想将(或空单元格)添加到“佛罗里达州”(佛罗里达州)--也就是说,我想选择与Q= 'USA‘和R匹配的行,即“佛罗里达”、“NY”或“空”。
我不确定这是否可能,但有没有一种方法可以选择A,除非它为空,然后选择B?
我正在写一个触发器,我的代码是
insert into tbl_a(userid, obj)
select p.author, new.id
FROM user_comment AS p
WHERE p.id=new.parent
但是,new.parent是一个可以为空的长整型(一旦在system.data.sqlite中得到支持,我将切换到外键),如果它为空,我将得到0结果,并且没有插入。我希望使用join media as m on m.id=new.media_id,如果new.parent为空,则返回m.u
我使用的是Advantage Database Server 10。
我有一个包含两个字段的表:
FieldA字符串不为空FieldB字符串不为空
现在我需要一个触发器,它在插入新记录时用FieldA的值填充fieldB。
我的意图是通过以下代码使用"before insert“或"instead of insert”触发器:
UPDATE test set test2 = ( SELECT test1 FROM __new );
但是对于这两个触发器,我得到的错误是fieldB不能为空。那么,我如何用触发器填充一个带有非空约束的字段呢?
我已经找到了要使用的MySQL查询
INSERT INTO tbl_time_in (studentID, studentDAY, studentDATE, studentTIME_IN, temp_schedule_ID)
SELECT *
FROM (SELECT 'rupert', 'Tuesday', 'June 29, 2016' ,'23:20', '59') AS tmp
WHERE NOT EXISTS (SELECT studentID
FROM tbl_
执行以下命令时,将得到以下错误。有人能帮忙吗!
不能将值NULL插入列'',表列不允许空。插入fails.Failed以执行以下SQL块
BEGIN
Select @v_setting_val=setting_val from EGPL_PROGRAM where setting_id=@v_setting_id
and group_id =
(select group_id
from egpl_pref_group
where group_type = 'departmental'
我有编号(10)列"list_id“,希望检查该字段是空的还是空的。
因此,我运行以下sql语句:
select list_id from item_list where list_id is null
这给了我大约200行字段是完全空的(没有数据)。
然后运行以下sql语句:
select count (list_id) from item_list where list_id is null
令我惊讶的是,返回的计数(List_id)= 0
我遗漏了什么吗?我试图实现的是查找那些list_id为空或空或不包含数据的行。
PK | PARENT | COMMENT
---+--------+-----------
1 | | I AM ONE
2 | | I AM TWO
3 | 1 | I AM ONE
4 | 1 |
5 | 2 | I AM TWO
6 | 2 | I AM THREE
我想更新行的COMMENT字段,其中PARENT不是null,因此COMMENT与父字段相同。这是预期的结果:
PK | PARENT | COMMENT
---+--------+---------
1 | | I AM ON
因此,我有以下C#方法将DataTable上载到DataTable( Server 2008)
public bool ImportData(DataTable dtImport, string _importtype, string _custno)
{
bool success = false;
string constr = System.Configuration.ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new S
我有一个表a,它的sdate列是TIMESTAMP
我想计算sdate为空的行数。
当我在做
SELECT sdate
FROM a
WHERE sdate IS NULL
我得到了13行。
在那之后我做的是:
SELECT count(sdate)
FROM a
WHERE sdate IS NULL
我本来希望能得到13,但我得到了0。我不明白为什么。
当我把它改为:
SELECT count(*)
FROM a
WHERE sdate IS NULL
我得到了13的正确结果。
有人能解释为什么SELECT count(sdate)方法会返回错误的结果吗?
当我INSERT一个已经在数据库中的用户时,RETURN "Error_UsernameExist"应该触发,但是我得到了来自function:Error Code: 1062的错误消息。关键字“testUser”的重复条目“Username_UNIQUE”
职能如下:
CREATE FUNCTION `registration`(usernameP TEXT, passwordP TEXT, saltP BLOB) RETURNS TEXT
BEGIN
IF ((SELECT `Username` FROM `DEV`.`RUser` WHERE `Username`
我有一个执行UPSERT的查询(Insert -但如果存在,则为update)。
MySQL抱怨它是无效的,下面是查询:
insert into
mytable (user_id, num_products_observed, num_purchased_percent)
(select
A.user_id,
B.total 'num_products_observed',
case
when A.purchased is null then 0
else A.pu
我正在疯狂地使用Server存储过程,它应该将用户注册到数据库中(如果用户还不存在)。但是,在成功执行过程后,不会将任何数据插入到Users表中。
如果我直接运行insert语句,它就能工作。
下面是完整的过程代码,在你问我之前,数据库是空的。
--USERS
CREATE PROCEDURE [dbo].[RegisterUser]
@NAME VARCHAR(255),
@PHONENUMBER VARCHAR(255),
@STATUS INT OUT,
@REMAININGDAYS INT OUT
AS
BEGIN
SET NOCOUNT ON;
UP
在MySQL中,我有一个触发器:
BEGIN
IF (EXISTS(SELECT * FROM devices WHERE device_id = NEW.device_id)) THEN
SET NEW.id = NULL;
ELSE
INSERT INTO objects (object_type) VALUES ('3');
SET NEW.id = LAST_INSERT_ID();
END IF;
END
当该触发器(从objects表)获得新的id时,它会将该id插入到设备表的id列中。
当我提到它(例如PHP中的mysql_insert_
此声明,“有关引用带替换触发器的表的INSERT或UPDATE语句时必须为列提供值的规则相同,就好像该表没有替换触发器一样”。
然而:
CREATE TABLE tbTriggerTest (id INT PRIMARY KEY);
GO
CREATE TRIGGER dbo.tgTriggerTest
ON dbo.tbTriggerTest
INSTEAD OF INSERT
BEGIN
SELECT * FROM INSERTED
END
GO
INSERT tbTriggerTest DEFAULT VALUES
GO
不会抛出错误,即使在INSERT语句级别,我将向主键插
我不知道为什么当我试图创建一个存储过程时,下面的代码会产生错误。我对SP比较缺乏经验。
CREATE PROCEDURE [dbo].[InsertDuplicateFields]
(@UniqueColID varchar(50), @IndividualID varchar(50) = null)
AS
Begin
INSERT INTO TableCollisionBegin
SELECT * FROM TableCollisionBegin
WHERE [UniqueColID] = @UniqueColID;
我希望在非主键字段中插入具有唯一值的行。我不能使用唯一索引(因为多个字段索引中的NULL值,但在这里它并不重要)。
我使用INSERT/SELECT作为原子(我希望)操作--参见下面。
我将描述简化示例中的问题:
我有张空桌子:
CREATE TABLE Test ( Id int(11) NOT NULL AUTO_INCREMENT, A int(11) DEFAULT NULL, PRIMARY KEY (Id) ) ENGINE=InnoDB;
..。具有自动提交模式的两个会话被关闭:
在第一次会议上,我执行:
INSERT INTO Test (A) SELECT A
DELETE FROM summary;
INSERT INTO summary(g_rating_total)
SELECT COUNT(rating) FROM detailed
WHERE rating = 'G';
INSERT INTO summary(pg_rating_total)
SELECT COUNT(rating) FROM detailed
WHERE rating = 'PG';
INSERT INTO summary(pg13_rating_total)
SELECT COUNT(rating) FROM detailed
WHER
当我使用这个查询时:
SELECT * from table
空结果也会显示出来。
当我使用:
SELECT * from table WHERE tablet<>''
我得到了我想要达到的结果,但是只为tablet提供了。我希望在整个谈判中实现这一目标。
类似于:
SELECT * from table //that is not empty
有什么想法吗?谢谢!
在幻灯片中,我看到了一个sql代码(第22页):
INSERT INTO Comments (author, comment)
VALUES (‘Ollie’, ‘Good job!’);
SELECT path FROM Comments
WHERE comment_id = 7;
UPDATE Comments
SET path = $parent_path || LAST_INSERT_ID() || ‘/’
WHERE comment_id = LAST_INSERT_ID();
我认为我们可以对其进行优化:
SELECT path FROM Comments
WHERE comm
在下面的代码中,第一个insert语句是
insert into customer_master select max(customerid)+1,customer_name from customer_master
where customer_name not in (select customername from customer_master);
我收到了空值插入错误。是的,这是正确的。
但是它会在块的语句下面停止执行。
insert into customer_account_mapping select customerid,upper(pcd(i)),upper(acd(i)
我使用的是Sybase ASE 15.0.3。我想使用这种类型的逻辑,但它给了我错误。
begin
declare
@b int, @c int
select @b = Count(My_ID)
FROM some_table
WHERE (some_condition);
select @c = Count(My_Sales)
FROM some_table
WHERE (some_condition);
insert into my_table (new_id, new_sales) value (@b