日期:2014-05-17  浏览次数:20477 次

数据库操作的一些基本问题
1、往数据库中插入一条记录时(insert into table values('column1','column2'…))怎样在插入空值的时候让其自动补充为默认值??(因为属性列较多,所以不想对单独的列进行添加,希望能够自动把插入的空值转换为默认值)希望各位前辈能够帮忙解决一下;
2、有一个表的主码是两个属性列组合而成的,我想用
select top (n-m+1) id from tablename
where id not in (
  select top m-1 id from tablename
)
这种形式来获取指定的记录,但把id换为主码时我不知道如何操作。。。
以上两个问题,希望各位能够指点一下,为了这个问题愁死啦···
------解决方案--------------------

--试试,不知道行不行
create table TableTestPrimayKey(
SNO varchar(50),
BOOKNO varchar(50),
BTIEM DATETIME,
REMARK VARCHAR(200)
)

INSERT INTO TableTestPrimayKey VALUES(NEWID(),NEWID(),GETDATE(),NEWID())
GO 100;

SELECT TOP 5 *
  FROM TableTestPrimayKey
 WHERE SNO NOT IN (SELECT A.SNO
                     FROM (SELECT TOP 10 SNO, BOOKNO
                             FROM TableTestPrimayKey
                            ORDER BY BTIEM) A
                   
                   )
   AND BOOKNO NOT IN (SELECT A.BOOKNO
                        FROM (SELECT TOP 10 SNO, BOOKNO
                                FROM TableTestPrimayKey
                               ORDER BY BTIEM) A)

------解决方案--------------------
这是我做过的也许能够帮助你if exists(select* from sysobjects where name='one_')
drop trigger one_
go
create trigger one_
on class
for insert
as 
begin
declare @one int
declare @two int
select @one=classid from inserted 
select @two=studentid from student
insert into sc (classid,studentid) values(@one,@two)
end
------解决方案--------------------
靠,误操作,没写完就提交了。
MSSQL2005及以上版本:

;with aaa as
(
    select row_number() over(order by col1,col2) as rowindex,* from table1
)
select top (n-m+1) rowindex from aaa where rowindex not in (select top m-1 from aaa)

这样试试
------解决方案--------------------